Archivy kategorií: ZBYTEK

HTTP 406 Chyba při použití úhlové $http.get proti SharePoint REST koncových bodů

Aktualizovat: Marc AD ndersson poukázal na tento velký kus info: http://blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. To vysvětluje hodně :).

To může být vůbec nejhorší titul blogu! Anyhoo.

Jsem obvykle dělat všechny moje prototypování proti O365 instance. Mám své osobní instance tak, že se nemám bát a ovlivňuje někdo jiný. Jako stranou – si říkáme provedeno kolem virtuálních strojů na našich noteboocích s MECHEM – SQL Server, SLUŽBA IIS, rozhodnutí vs Hyper-V. VMWare? Anyhoo...

Jsem si vyvinul app pomocí úhlové v tomto prostředí, které se, mimo jiné, to:

$http.Get(serverUrl)
.úspěch(funkce(údaje, stav, záhlaví, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funkce(Výsledky) {

// a tak dále a tak pěnu

To bylo v pořádku jen ve dvou různých prostředích online služby SharePoint. Avšak, když můj kolega portován na instanci Cloudshare, vystupoval HTTP 406 Chyba (což bylo poprvé, co jsem kdy dostal tenhle, Takže... hurá, Asi). Jsme trochu výzkumu a všiml si, že záhlaví "Přijmout" vypnuto. SharePoint online byl naprosto spokojený s:

Přijmout: aplikace/json

Ale cloudshare instance (což je SP na prem, hostitelem virtuálního serveru) Chtěl klasické "odata = verbose" přidána také:

Přijmout: aplikace/json;OData = verbose

Chcete-li opravit, Přidali jsme záhlaví jako takové:

var config = {záhlaví: {
"Přijmout": "aplikace/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.úspěch(funkce(údaje, stav, záhlaví, config) {

var getLinksResponse = data;

getLinksResponse.value.forEach(funkce(Výsledky) {

// a tak dále a tak pěnu

To se zbavil 406, ale to také změnil formát odpovědi. To bylo více... verbose. (haha!) Další změny byly nutné, a tady je konečný výsledek:

var config = {záhlaví: {
"Přijmout": "aplikace/json;OData = verbose'
}
};

$http.Get(serverUrl,config)
.úspěch(funkce(údaje, stav, záhlaví, config) {

var getLinksResponse = data;

getLinksResponse.d.Results.forEach(funkce(Výsledky) {

// a tak dále a tak pěnu

Jen se proměnil v 30 minutě problém pro nás, tak to máme štěstí. Doufejme, že někdo zjistí, to užitečné.

</Konec>

Jak zadat lidi jako obor hledání / Zdroj obsahu pomocí služby SharePoint 2013 REST API

Měl jsem důvod pro práci s SharePoint 2013 Rozhraní API pro vyhledávání pomocí REST prvním. Chtěl jsem se hledat pro lidi, není dokumenty. Klíč učení, zde je, že zadáte zdroje obsahu prostřednictvím identifikátoru GUID (nebo alespoň v tomto případě). Následující úryvek ukazuje jQuery jak:

    loadExpertsAsync: funkce() {

        jQuery.support.cors = pravda;

        $.AJAX({
            Adresa URL: to.CreateFullApiUrl() +
                "?querytext = "portály"&SourceId = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Dovednosti,AboutMe,Zájmy,Pracovní funkce,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            Metoda: "ZÍSKAT",
            záhlaví: { "Přijmout": "aplikace/json; OData = verbose" },
            mezipaměť: NEPRAVDA,
            úspěch: funkce (výsledek) {

V mém případě, Já běh API proti SharePoint online. Chcete-li získat identifikátor GUID, Tohoto postupu:

  1. Přístup Centrum správy služby SharePoint
  2. Vyberte "Hledat" z levé ruky navigace
  3. Vyberte výsledek zdroje "spravovat"
  4. Zvolte "Místní lidé výsledky"
  5. Podívejte se na URL.

Moje adresa URL vypadal trochu jako:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Parametr sourceid je, co pracoval pro mě.

(Chápu, že ID zdroje může být ve skutečnosti jakousi stálou věc s SP, but I’ll always check anyway 🙂 ).

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Příklad SharePoint ostatní hovory

Zde je sada vzorku REST hovorů, které pracují pro mě a může vám pomoci také. Od 02/2014, there are two examples 🙂

  1. Odkaz na sloupec obsahující mezery v názvu
  2. Referenční sloupec vícenásobného výběru
  3. Vyhledávání lidí přes REST

 

Přidám k tomu, jak plyne čas.

Zde jsou některé užitečné inkousty, našel jsem i:

Odkaz na sloupec obsahující mezery v názvu

Vytvořit vlastní seznam s názvem "Autor blogu" (mezera mezi blogu a autor).

$select odkazovat tento sloupec je:

image

Jednoduše nahradit prostor "_x0020_". _X0020_ v mnoha příkladech vidíme přes Internet a zbytek se neliší.

Pokud to neuděláte, Budeš se chybová zpráva takto:

Výraz “Autor blogu” není platný.

Snadné.

Referenční multi-SELECT vyhledávací sloupec

Nastavit:

  1. Vytvořit vlastní seznam s názvem kategorie.
  2. Přidejte některé kategorie. Přidala jsem thusly kategorie:image
  3. Vytvořit další vlastní seznam s názvem MockBlog a přidejte kategorie jako sloupec vícenásobného výběru (nebo sloupec webu, pokud to je, jak se role).

Přidávat položky do seznamu Mockblog a jste připraveni.

Styl volejte Ajax pomocí jQuery bude vypadat přibližně takto:

serverUrl  = "/_api-web seznamy GetByTitle("MockBlog")/položky" +
             "?$Vyberte = titul,Kategorie/titul,Blog_x0020_Author/titul" + 
             "&$expand = Blog_x0020_Author,Kategorie";

Sdělujeme SharePoint, "Dej mi titul pro všechny kategorie (Kategorie/titul). Skutečné hodnoty pro Titul od $Rozbalitseznam kategorie Ing." (Můj klidný parafráze je asi dost volné, ale to jak jsem výklad, že).

Pokud děláte to přes JavaScript a použití Šumař se podívat na výstup, dostanete něco takového na oplátku:

 

image

(Výše uvedené je JSON objekt)

Vyhledávání lidí přes REST

Jsem blogged o tomto odděleně. Klíčem je určit parametr sourceid, jehož hodnota je identifikátor GUID zdroje obsahu místní lidé. (Zdroje obsahu se kdysi říkalo obory a je oh můj tak těžké označovat vše prostor pro mě!).

Přečtěte si více o tom zde: http://www.mstechblogs.com/paul/?p=10385

 

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a snadné: Vytvořit web služby SharePoint pomocí webové služby REST

Existuje mnoho zdrojů, kolem které ukazují, jak na to, ale nemohl jsem najít komplexní go na odkaz, tak jsme tady.

Můžete vytvořit web služby SharePoint pomocí REST API.  Zde je příklad, plně pečené:

<!--
    SiteRequestForm.html: Shromažďování informací a vytvořit web pro uživatele.
-->

<centrum>
<Tabulka>
    <TR>
        <TD>Název webu:</TD>
        <TD><vstup Typ= "text" Jméno= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <vstup Typ= "Odeslat" ID= "CreateSiteButton" hodnota= "Vytvořit web" />
        </TD>
    </TR>
</Tabulka>
</centrum>

<skript src="../Plugins/jQuery-1.11.0.min.js"></skript>

<skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametry": {
                __metadata: { "typ": "SP.WebInfoCreationInformation" },
                Adresa URL: "Paultest1",
                Titul: "Paultest1",
                Popis: "odpočinek vytvořil web Paul!",
                Jazyk: 1033,
                Webovou šablonu: "sts",
                UseUniquePermissions: NEPRAVDA
            }
    },

    createSite: funkce () {

        jQuery.support.cors = pravda;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.AJAX({
            Adresa URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            Metoda: "POST",

            záhlaví: {
                "přijmout": "aplikace/json; OData = verbose",
                "content-type": "aplikace/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            údaje: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            úspěch: funkce () { Výstraha("úspěch"); },
            Chyba: funkce () { Výstraha("Chyba"); }

        });
    },

    wireUpForm: funkce () {
        $("#CreateSiteButton").klepněte na tlačítko(funkce () {
            Výstraha("Chystáte se pokusit se vytvořit web.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skript>

Když se úspěšný, dostanete paket JSON odpověď takto:

image

Moje klíčové myšlenky a poznatky z tohoto zahrnují:

  • Tento přístup používá jQuery.  V mém případě, Moje knihovna jQuery se nachází v ".../ plugins. "  Budete chtít změnit, aby ukazoval na vaše oblíbené místo JQ.
  • Můžete kopírovat a vložit to celý fragment kódu do webové části Editor obsahu na stránce, a to by mělo fungovat dobře.  Budete chtít změnit koncový bod volání API a ujistěte se, že odkazujete JQ správně.
  • Adresa URL je relativní váš API koncového bodu.  V mém případě, je vytvářet podřízené weby pod https://bigapplesharepoint.com
  • Není nutné poskytovat obsah délka. Některé příspěvky blogu a MSDN dokument naznačuje, že, ale stalo se pro mě automaticky, což Předpokládám je zpracovávaná samotné volání .ajax $.
  • Tato linka je nutné vyhnout se "zakázaná" reakce: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existují jiné způsoby, jak to udělat, ale je to docela hezký.  Ztratil jsem odkaz na blog, která poskytuje tento zástupce.  H/T na vás, tajemný blogger!

Hodně štěstí a doufám, že to pomůže někdo.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a jednoduché: SharePoint REST zavolat pouze výnosy 100 Záznamy

Pracoval jsem na protilehlé internetové stránky pro mého SharePoint praxi v New York a používá mnoho volání JavaScript a odpočinku pro zobrazování obsahu.

Během hlavního vývoje, Jsem jen vytvořit malé dataset s 10 nebo tak řádky do vlastního seznamu a ostatní telefony vytáhl odtud.  Kdysi jsem vrazil seznam má několik set řádků dat, testování na předpokládaný růst, Zjistil jsem, že jsem dostala přesně 100 řádky vrácené zpět na mé volání REST.

Jde velmi jednoduchou věc řešit.  V mém případě (a věřím, že ve většině případů), Výchozí hodnota REST volání do služby SharePoint (a možná i jako průmyslový standard?) návrat 100 řádky.  Chcete-li vrátit více, než je výchozí, pomocí parametru $top na vaše volání, stejně jako v:

ZÍSKAT /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/položky?$Vyberte = ID,Titul,Kategorie/titul,Blog_x0020_Author/titul,DatePublished,BlogSummary&$expand = Blog_x0020_Author,Kategorie&$filtr =&$Top = 9999

Vybral jsem 9999 v tomto případě od té doby vím, že growth-wise, nebude existovat více než 200 nebo tak řádky přidány do tohoto seznamu za rok.  Pokud se stane nemotorný, Můžeme realizovat některé stránkování po silnici.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin