Archiv der Kategorie: REST

HTTP 406 Fehler bei der Verwendung von eckigen $http.get gegen SharePoint-REST-Endpunkte

Update: Marc AD Ndersson wies darauf hin, dieses großartige Stück info: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Das erklärt einiges :).

Das ist der schlechteste Titel der einen Blog-Post je! Wie auch immer.

Ich tun in der Regel alle meine Prototypen gegen eine O365-Instanz. Ich habe meine persönliche Instanz, so dass ich nicht besorgt über die Auswirkungen auf jemand anderes sein. Als Nebenwirkung – denken Sie daran, wenn wir für unsere Laptops mit Moos – durchgeführt, um virtuelle Maschinen aufrufen SQL Server, IIS, Entscheidung über Hyper-V-vs. VMWare? Wie auch immer...

Ich hatte eine app mit Angular in diesem Umfeld, das entwickelt, unter anderem, Dies:

$http.Get(serverUrl)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Dies war nur in zwei verschiedenen SharePoint online-Umgebungen adaequat. Jedoch, Wenn es mein Kollege auf eine Cloudshare-Instanz portiert., Er war immer ein HTTP 406 Fehler (Das war das erste Mal habe ich nie, dass man, Also... Yay, Ich vermute). Wir haben ein wenig Forschung und bemerkte, dass die "Accept"-Header Weg war. SharePoint online war vollkommen zufrieden mit:

Akzeptieren: Application/json

Aber die Cloudshare Instanz (Prem ist die SP, auf einem virtuellen Server gehostet) wollte das klassische "promoveaza = verbose" sowie in hinzugefügt:

Akzeptieren: Application/json;promoveaza = verbose

Zu reparieren, Wir haben den Header als solche:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Entledigte sich die 406, aber auch das Format der Antwort geändert. Es war mehr... ausführlich. (haha!) Weitere Änderungen sind erforderlich, und hier ist das Endergebnis:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.d.results.forEach(Funktion(i) {

// und so weiter und so Schaum

Es stellte sich nur in einem 30 Minute Problem für uns, so dass wir Glück gehabt. Hoffentlich findet jemand diese nützliche.

</Ende>

Menschen als einen Suchbereich angeben / Inhaltsquelle mit SharePoint 2013 REST-API

Ich hatte Grund mit SharePoint arbeiten 2013 Such-API über REST zum ersten Mal. Ich wollte nach Personen suchen, keine Dokumente. Die Taste lernen ist hier, dass geben Sie Content-Quellen über seine GUID (oder zumindest in diesem Fall). Die folgende jQuery Ausschnitt zeigt wie:

    loadExpertsAsync: Funktion() {

        jQuery.support.cors = wahr;

        $.AJAX({
            URL: Dies.CreateFullApiUrl() +
                "?Querytext = 'Portale'&SourceID = 'b09a7990-05ea-4af9-81ef-edfab16c4e31'" +
                "&Selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Fähigkeiten,AboutMe,Interessen,JobTitle,PastProjects,Bild-URL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&ROWLIMIT = 99",
            Methode: "Erhalten",
            Header: { "Akzeptieren": "Application/json; promoveaza = verbose" },
            Cache: falsch,
            Erfolg: Funktion (Ergebnis) {

In meinem Fall, Ich bin die API für SharePoint online ausgeführt. Um die GUID zu erhalten, Ich Schritte diese:

  1. Zugang zum SharePoint Administrationscenter
  2. Klicken Sie auf "Suche" aus der linken Navigationsleiste
  3. Wählen Sie "Ergebnis Quellen verwalten"
  4. Wählen Sie "Einheimischen Ergebnisse"
  5. Sehen Sie sich die URL.

Meine URL sah so etwas wie:

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

Parameters Sourceid ist was für mich gearbeitet.

(Ich verstehe, dass die Sourceid tatsächlich eine Art permanente mit SP sein kann, aber ich werde sowieso immer überprüfen 🙂 ).

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Beispiel SharePoint REST Aufrufe

Hier ist eine Reihe von Beispiel-REST-Aufrufe, die Arbeit für mich und kann Ihnen helfen, sich auch. Als der 02/2014, gibt es zwei Beispiele 🙂

  1. Eine Spalte mit Leerzeichen im Namen verweisen
  2. Eine Mehrfachauswahl Spalte verweisen
  3. Führen Sie eine Personensuche über REST

 

Ich füge dazu wie die Zeit vergeht.

Hier sind einige nützlichen Tinten habe, die ich auch gefunden:

Eine Spalte mit Leerzeichen im Namen verweisen

Erstellen Sie eine benutzerdefinierte Liste, mit einer Spalte mit dem Namen "Blog-Autor" (Abstand zwischen Blog und Autor).

$select auf diese Spalte verwiesen wird:

image

Ersetzen Sie einfach den Raum mit "_x0020_". Wir sehen die _x0020_ in vielen Beispielen über den Internets und REST ist nicht anders.

Wenn Sie das nicht tun, Sie sind verpflichtet, eine Fehlermeldung wie diese:

Der Ausdruck “Blog-Autor” ist nicht gültig.

Einfach genug.

Referenz einer Mehrfachauswahl Nachschlagespalte

Einrichten:

  1. Erstellen einer benutzerdefinierten Liste mit dem Namen Categories.
  2. Einige Kategorien hinzufügen. Ich fügte Kategorien Wasserverbrauch:image
  3. Erstellen Sie eine andere benutzerdefinierte Liste mit der Bezeichnung MockBlog und fügen Kategorien als multi-select-Listenspalte hinzu (oder Websitespalte wenn es das ist, wie Sie Rollen).

Einige Elemente in Ihre Mockblog-Liste einfügen und fertig.

Ein Ajax-Stil-Aufruf mit jQuery wird wie folgt aussehen:

ServerUrl  = "/_api/Web/Listen/GetByTitle('MockBlog')/Elemente" +
             "?$Wählen Sie = Title,Kategorien/Titel,Blog_x0020_Author/Titel" + 
             "&$Erweitern Sie = Blog_x0020_Author,Kategorien";

Wir sagen SharePoint "geben Sie mir den Titel für alle Kategorien (Kategorien/Titel). Erhalten Sie die tatsächlichen Werten für Titel von $Erweitern SieIng der Liste Kategorien." (Meine erholsamen paraphrasieren ist wohl ziemlich locker, Aber wie ich es interpretieren bin).

Wenn du das tust, mit JavaScript und mit Fiddler um zu betrachten, die Ausgabe, Sie bekommen so etwas im Gegenzug:

 

image

(Das oben genannte ist ein JSON-Objekt)

Führen Sie eine Personensuche über REST

Ich gebloggt dazu separat. Der Schlüssel ist einen Sourceid-Parameter festgelegt, deren Wert die GUID der einheimischen Inhaltsquelle ist. (Content-Quellen verwendet, um die Bereiche bezeichnet werden und es ist so schwer, oh-mein nicht alles aufrufen, einen Bereich für mich!).

Mehr dazu lesen sie hier: http://www.mstechblogs.com/paul/?p=10385

 

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: Erstellen einer SharePoint-Website, die Verwendung von REST

Gibt es eine Menge Ressourcen um, die zeigen, wie Sie dies tun, aber ich konnte einen umfassenden gehe-zu-Link finden, Hier sind wir.

Sie können eine SharePoint-Website mithilfe der REST-API erstellen.  Hier ist ein vollständig gebackene Beispiel:

<!--
    SiteRequestForm.html: Informationen sammeln und Erstellen einer Website für den Benutzer.
-->

<Zentrum>
<Tabelle>
    <TR>
        <TD>Site-Name:</TD>
        <TD><Eingang Typ= "text" Name= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD colspan= "2">
            <Eingang Typ= "submit" ID= "CreateSiteButton" Wert= "Erstellen die Website" />
        </TD>
    </TR>
</Tabelle>
</Zentrum>

<Skript src="../Plugins/jQuery-1.11.0.Min.js"></Skript>

<Skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "Parameter": {
                __metadata: { "Typ": "SP.WebInfoCreationInformation" },
                URL: "Paultest1",
                Titel: "Paultest1",
                Beschreibung: "Rest-erstellt Web von Paul!",
                Sprache: 1033,
                WebTemplate: "sts",
                UseUniquePermissions: falsch
            }
    },

    createSite: Funktion () {

        jQuery.support.cors = wahr;

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

            Header: {
                "akzeptieren": "Application/json; promoveaza = verbose",
                "Content-type": "Application/json;promoveaza = verbose",
                "X-RequestDigest": $(#__REQUESTDIGEST"").Val()
            },

            Daten: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            Erfolg: Funktion () { Warnung("Erfolg"); },
            Fehler: Funktion () { Warnung("Fehler"); }

        });
    },

    wireUpForm: Funktion () {
        $("#CreateSiteButton").Klicken Sie auf(Funktion () {
            Warnung("Zu versuchen und Erstellen der Site.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</Skript>

Wenn Sie erfolgreich sind, Sie erhalten ein JSON-Paket als Antwort wie folgt:

image

Meine wichtigsten Gedanken und Erkenntnisse aus diesem include:

  • Dieser Ansatz verwendet jQuery.  In meinem Fall, meine jQuery-Bibliothek befindet sich im ".../ Plugins. "  Sie wollen das darauf zu Ihrem Lieblings-JQ-Standort ändern.
  • Sie können kopieren und fügen Sie ganze Ausschnitt in einem Inhalts-Editor-Webpart auf einer Seite und es sollte gut funktionieren.  Sie wollen den Endpunkt der API-Aufruf zu ändern und sicherstellen, dass Sie korrekt JQ verweisen.
  • Die URL ist relativ Ihre API-Endpunkt.  In meinem Fall, Es ist Sub-Sites unter erstellen. https://bigapplesharepoint.com
  • Du musst eine Inhaltslänge bieten. Einige Blog-Posts und MSDN Dokument impliziert, dass Sie tun, aber geschah für mich automatisch, welche ich annehme werden durch den Aufruf der $-Schnipsel selbst behandelt.
  • Diese Linie wird benötigt, um eine "Verbotene" Antwort zu vermeiden: "X-RequestDigest": $(#__REQUESTDIGEST"").Val().  Es gibt andere Wege, es zu tun, aber das ist ziemlich nett.  Ich habe den Link zum Blog verloren, die diese Verknüpfung bereitgestellt.  H/T auf Sie, geheimnisvolle blogger!

Viel Glück und hoffe, dass dies jemand hilft.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Schnell und einfach: SharePoint REST rufen nur gibt 100 Datensätze

Ich habe an einer öffentlichen ausgerichteten Website für meine SharePoint-Praxis hier in gearbeitet New York und verwendet eine Menge JavaScript und REST Anrufe auf Inhalt anzeigen.

Während der Hauptstrecke Entwicklung, Ich erstelle eine kleine Dataset mit nur 10 oder Zeilen in einer benutzerdefinierten Liste und meine REST-Anrufe alle so gezogen, von dort.  Einmal traf ich auf der Liste, um ein paar hundert Zeilen von Daten zum Testen für das erwartete Wachstum haben, Ich fand, dass ich genau bekam 100 wieder auf meine Anrufe REST zurückgegebenen Zeilen.

Dies ist eine sehr einfache Sache zu Adresse.  In meinem Fall (und ich glaube, in den meisten Fällen), Standardmäßig ruft REST in SharePoint (und möglicherweise als Branchenstandard?) Rückkehr 100 Zeilen.  Mehr als der Standardwert zurückgegeben, mithilfe des Parameters $top auf Ihren Anruf, wie in:

/Insights Dev/_api/web/lists/GetByTitle zu erhalten('MockBlog')/Elemente?$Wählen Sie = ID,Titel,Kategorien/Titel,Blog_x0020_Author/Titel,DatePublished,BlogSummary&$Erweitern Sie = Blog_x0020_Author,Kategorien&$Filter =&$oben = 9999

Ich nahm 9999 in diesem Fall da ich weiß, die growth-wise, Es werden nicht mehr als 200 oder also Zeilen in einem Jahr in diese Liste aufgenommen.  Wenn es plump wird, Wir realisieren eine Auslagerungsdatei auf der Straße.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin