Freigeben über


Ermitteln von URIs von SharePoint-REST-Dienstendpunkten

Struktur der URIs von SharePoint-REST-Endpunkten

Bevor Sie mithilfe des REST-Diensts auf eine SharePoint-Ressource zugreifen können, müssen Sie zuerst den URI-Endpunkt ermitteln, der auf diese Ressource zeigt. Wann immer möglich, bildet die URI für diese REST-Endpunkte die API-Signatur der Ressource im SharePoint-Clientobjektmodell streng nach. Zum Beispiel:

var items = List.GetByTitle(listname).GetItems();

In einigen Fällen unterscheidet sich die Endpunkt-URI aber von der entsprechenden Clientobjektmodell-Signatur, um REST- oder OData-Konventionen zu erfüllen.

Die folgende Abbildung zeigt die allgemeine Syntaxstruktur von SharePoint REST-URIs.

Syntaxstruktur von SharePoint REST-URIs**

SharePoint REST-Anforderungssyntax

Einige Endpunkte für SharePoint-Ressourcen weichen von dieser Syntaxstruktur ab:

  • Methoden, die komplexe Typen als Parameter erfordern. Wenn die entsprechende Clientobjektmodell-Methode erfordert, dass komplexe Typen als Parameter übergeben werden, kann der REST-Endpunkt wegen REST-Einschränkungen von dieser Syntaxstruktur abweichen.
  • Statische Methoden und Eigenschaften. REST-Endpunkte weichen von dieser Syntaxstruktur bei URIs ab, die statische Methoden und Eigenschaften darstellen.

Ermitteln von SharePoint-REST-Dienstendpunkten

Befolgen Sie diese Schritte, um einen REST-Endpunkt für eine SharePoint-Ressource zu erstellen:

  1. Starten Sie mit der REST-Dienstreferenz:

    https://{site_url}/_api

  2. Geben Sie den entsprechenden Einstiegspunkt an. Beispiel:

    https://{site_url}/_api/web

  3. Navigieren Sie vom Einstiegspunkt zu den spezifischen Ressourcen, auf die Sie zugreifen möchten. Dabei müssen Sie auch Parameter für Endpunkte angeben, die Methoden im Clientobjektmodell entsprechen. Beispiel:

    https://{site_url}/_api/web/lists/getbytitle('{list_name}')

Referenzieren Sie den SharePoint REST-Dienst in Ihrem Endpunkt-URI

Verwenden Sie _api, um den SharePoint REST-Dienst in Ihren Endpunkt-URIs zu kennzeichnen. Der REST-Dienst ist Teil des Webdiensts „client.svc“. Um die Erstellung von REST-URIs zu erleichtern und den REST URI-Basispfad zu kürzen, verwendet der REST-Dienst _api, wodurch der explizite Verweis auf den Webdienst „client.svc“ nicht mehr erforderlich ist.

URIs, die auf den Webdienst „client.svc“ verweisen, werden vom REST-Dienst jedoch weiterhin erkannt und akzeptiert. Sie können z. B. https://{site_url}/_vti_bin/client.svc/web/lists anstelle von https://{site_url}/_api/web/lists verwenden. Allerdings ist _api die bevorzugte Konvention. URLs haben maximal 256 Zeichen. Mit _api wird der Basis-URI verkürzt und es bleiben mehr Zeichen für die Erstellung der verbleibenden URL übrig.

Angeben von Einstiegspunkten für den SharePoint REST-Dienst

Die wichtigsten Einstiegspunkte für den REST-Dienst sind die Websitesammlung und die Website des angegebenen Kontexts. Damit entsprechen diese Einstiegspunkte den Eigenschaften ClientContext.Site und ClientContext.Web in den Clientobjektmodellen.

Gehen Sie folgendermaßen vor, um auf eine bestimmte Websitesammlung zuzugreifen:

https://{site_url}/_api/site

Gehen Sie folgendermaßen vor, um auf eine bestimmte Website zuzugreifen:

https://{site_url}/_api/web

Zusätzlich zu /site und /web enthält der REST-Dienst mehrere Zugriffspunkte, die Entwicklern erlauben, zu spezifischen Funktionen zu navigieren. In der folgenden Tabelle sind einige dieser Zugriffspunkte aufgeführt.

Funktionsbereich Zugriffspunkt
Website https://{site_url}/_api/site
Web https://{site_url}/_api/web
Benutzerprofil https://{site_url}/_api/SP.UserProfiles.PeopleManager
Suche https://{site_url}/_api/search

Erstellen Sie hier mithilfe des Objektmodells spezifischere REST-Endpunkte mit den Namen der APIs aus dem Clientobjektmodell, jeweils getrennt durch einen Schrägstrich (/). In der Tabelle unten sehen Sie Beispiele für Clientobjektmodell-Aufrufe und die zugehörigen REST-Endpunkte.

Clientobjektmodell-API REST-Endpunkt
ClientContext.Web.Lists https://{site_url}/_api/web/lists
ClientContext.Web.Lists[guid] https://{site_url}/_api/web/lists('<guid>')
ClientContext.Web.Lists.GetByTitle("Title") https://{site_url}/_api/web/lists/getbytitle('<Title>')

Bei Endpunkt-URIs wird die Groß- und Kleinschreibung nicht beachtet. Verwenden Sie in der vorhergehenden Tabelle z. B. /getbytitle, um das REST-Äquivalent der GetByTitle()-Methode anzugeben.

Angeben von Parametern in REST-Endpunkt-URIs

SharePoint erweitert die OData-Spezifikation, um es Ihnen zu ermöglichen, für die Angabe von Methodenparametern und Indexwerten Klammern zu verwenden. Dadurch werden Fehler durch Mehrdeutigkeiten in URIs vermieden, die mehrere Parameter mit dem gleichen Namen enthalten. Die folgenden beiden URIs enthalten beispielsweise Parameter, die den gleichen Namen aufweisen:

https://{site_url}/_api/web/lists/getByTitle('Announcements')/fields/getByTitle('Description')

https://{site_url}/_api/web/lists('{list_guid}')/fields/getById('{guid}')

Um mehrere Parameter anzugeben, schließen Sie den Parameter als ein Namen-Wert-Paar ein, und trennen Sie die Parameter mit Kommas. Beispiel:

https://{site_url}/_api/web/getAvailableWebTemplates(lcid=1033, includeCrossLanguage=true)

Die folgende Abbildung zeigt die Syntax von SharePoint-REST-Parametern.

Syntax von SharePoint REST-Parametern

Syntax von Methodenparametern des SharePoint REST-Diensts

Komplexe Typen als Parameter für den REST-Dienst

Einige Methoden im Clientobjektmodell erfordern eine große Nutzlast als Parameter. Damit REST-Endpunkte die Funktionsparität mit ihren entsprechenden Clientobjektmodell-APIs aufrechterhalten, müssen die Endpunkte einen komplexen Typ als Parameter akzeptieren. In diesen Fällen erweitert der REST-Dienst das bestehende OData-Protokoll, damit diese REST-Endpunkte einen einzelnen komplexen Typ als Parameter akzeptieren können. Dies bezieht sich nur auf POST-Vorgänge, und Sie müssen den komplexen Typ gemäß OData-Standards in Atom-Format oder JSON-Format übergeben.

So verwendet beispielsweise die Methode ListCollection.Add ein Microsoft.SharePoint.Client.ListCreationInformation-Objekt als Parameter. Um eine Liste zu einer bestimmten Website hinzuzufügen, erstellen Sie den entsprechenden REST-Endpunkt wie folgt:

POST https://{site_url}/_api/web/lists/add
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"
Content-Type: "application/json"
Content-Length: {length of request body as integer}

{ "d" : {
    "results": {
      "__metadata": {
        "type": "SP.ListCreationInformation"
      },
      "CustomSchemaXml": "…large payload…/",
      "Description": "desc",
      "DocumentTemplateType": "1",
      "TemplateType": "101",
      "Title": "Announcements"
    }
  }
}

Verwenden von Parameter-Aliasen in REST-Dienstaufrufen

Sie können die "Parameteraliasing"-Semantik in OData verwenden, um Parameter an einen SharePoint-REST-Endpunkt zu übergeben. Beim Parameteraliasing wird der Parameterwert mit einem Alias im Parameteraufruf identifiziert, und der tatsächliche Wert wird in der Abfragezeichenfolge der URI angegeben. So können Sie mehr Zeichentypen und eine einheitliche Formatierung mithilfe der Abfragezeichenfolge unterstützen.

Die folgenden zwei REST-URIs sind z. B. äquivalent:

Geben Sie den Parameterwert direkt an:

https://{site_url}/_api/web/applyWebTemplate("STS#0")

Verwenden Sie einen Parameteralias, und geben Sie den tatsächlichen Parameterwert in der Abfragezeichenfolge der URI an:

https://{site_url}/_api/web/applyWebTemplate(title=@template)?@template="STS#0"

Das Übergeben von komplexen Typen per Parameteraliasing wird vom SharePoint-REST-Dienst allerdings nicht unterstützt. So wird z. B. die folgende URI nicht unterstützt, die einen komplexen Typ im Parameteralias enthält:

https://{site_url}/_api/userProfiles/People(7)/GetWorkplace(@address)?@address={"__metadata":{"type: "ODataDemo.Address"},"Street":"NE 228th", "City":"Sammamish","State":"WA","ZipCode":"98074","Country": "USA"}

Parameter-Aliasing-Syntax des SharePoint REST-Diensts

Parameter-Aliasing-Syntax des SharePoint REST-Diensts

Angeben von Schlüsselverzeichnissen als Parameterwerte

Bei REST-Endpunkten, die Methoden entsprechen, die Dictionary<String, String>-Wörterbücher als Parameter verwenden, übergeben Sie das Wörterbuch als Serie von durch Kommas getrennten Namen-Wert-Paaren in der Abfragezeichenfolge.

REST-Dienstsyntax für Wörterbuchparameter

REST-Dienstsyntax für Wörterbuchparameter

Ein Objekt des Typs Dictionary<String, object> wird als Mehrfachwertobjekt namens „KeyedPropertyValue“ mit den folgenden Zeichenfolgeneigenschaften dargestellt:

  • Key Der Schlüssel des Mehrfachwertobjekts.
  • Value Der Wert des Objekts
  • Valuetype Der Werttyp des Objekts. Für einfache Werttypen, die vorhandenen EDM-Typen (Entity Data Model) zugeordnet sind, gibt der REST-Dienst die entsprechende EDM-Typzeichenfolge zurück. Beispiel: "Edm.String". Andernfalls gibt der REST-Dienst den von der Type.ToString-Funktion zurückgegebenen Werttyp zurück.

Angeben von Parameterwerten in der Abfragezeichenfolge

Wenn Ihre REST-URI in einem Methodenaufruf endet, können Sie Abfragezeichenfolgensyntax verwenden, um die Parameterwerte der Methode anzugeben. Beispiel:

https://{site_url}/_api/web/applyWebTemplate?template="STS#0"

In der folgenden Abbildung wird die Syntax veranschaulicht, die der REST-Dienst für Parameter in einer Abfragezeichenfolge verwendet.

REST-Dienstsyntax für Parameter in Abfragezeichenfolgen

REST-Dienstsyntax für Parameter in Abfragezeichenfolgen

Angeben von statischen Methoden und Eigenschaften als REST-Dienst-URIs

Um URIs zu erstellen, die statischen Methoden oder Eigenschaften entsprechen, verwenden Sie den entsprechenden API-Namen aus dem ECMAScript-Objektmodell, beginnend mit der Namespacedeklaration und unter Verwendung von punktierter Schreibweise. Beispiel: SP. Utilities.Utility.getImageUrl(imageName) im ECMAScript-Clientobjektmodell hätte das folgende REST-Äquivalent:

https://{site_url}/_api/SP.Utilities.Utility.getImageUrl('imageName')

Statische Methoden können allerdings nur direkt aufgerufen werden und sind als Teil einer größeren URI-Komposition nicht zulässig. Das direkte Aufrufen der SP.Utility.AssetsLibrary-Methode in REST ist z. B. wie folgt zulässig:

https://{site_url}/_api/SP.Utility.assetsLibrary/id

Die Verwendung des Ressourcenspeicherorts als Parameter für eine komplexere URI, wie im folgenden Beispiel gezeigt, ist allerdings nicht zulässig:

https://{site_url}/_api/getList(~SP.Utility/assetsLibrary/id)

In der folgenden Abbildung wird die Syntax veranschaulicht, die der SharePoint-REST-Dienst für statische Elemente verwendet.

Syntax von statischen Membern des SharePoint REST-Diensts

REST-Dienstsyntax für Parameter in Abfragezeichenfolgen

Wenn Sie die von einem Endpunkt angeforderten Daten auswählen, filtern oder sortieren möchten, unterstützt der SharePoint-REST-Dienst eine breite Palette von OData-Abfragezeichenfolgen-Operatoren. Weitere Informationen finden Sie unter Verwenden von OData-Abfragevorgängen in SharePoint REST-Anforderungen

Siehe auch