Durchführen von Batchanforderungen mit den REST-APIs

In diesem Artikel wird beschrieben, wie Sie Vorgänge und Abfragen an die REST-/OData-API von Microsoft SharePoint Online (sowie des lokalen SharePoint 2016 und höher) und die Unterklasse Dateien und Ordner der Office 365 REST-APIs zusammenfassen. Mit diesem Verfahren können Sie die Leistung Ihrer Add-ins verbessern, indem Sie mehrere Vorgänge in einer einzelnen Anforderung an den Server und einer einzelnen Antwort kombinieren.

Zusammenfassung der $batch-Option

SharePoint Online (und lokale SharePoint 2016 und höher) und die Office 365-APIs implementieren die OData-Abfrageoption$batch, sodass Sie sich auf die offizielle Dokumentation verlassen können, um Details zur Verwendung zu erhalten. Sie können auch die Blogbeiträge von Andrew Connell zu diesem Thema lesen, beginnend bei Teil 1: Batchverarbeitung mit der SharePoint REST-API.

Im Folgenden finden Sie eine Zusammenfassung der wichtigsten Punkte:

  • Die URL der Anforderung besteht aus der Stammdienst-URL und der Option $batch. Beispiel: https://fabrikam.sharepoint.com/_api/$batch oder https://fabrikam.office365.com/api/v1.0/me/$batch.
  • Der HTTP-Anforderungstext ist im MIME-Typ multipart/mixed.
  • Der Text der Anforderung ist in Bereiche unterteilt, die durch eine Trennzeichenfolge voneinander getrennt sind, die im Header der Anforderung angegeben ist.
  • Jeder Teil des Textkörpers verfügt über ein eigenes HTTP-Verb, eine eigene REST-URL sowie einen eigenen internen Textkörper, falls zutreffend.
  • Ein Teil kann ein Lesevorgang (oder Funktionsaufruf) oder ein ChangeSet aus mindestens einem Schreibvorgang (oder Funktionsaufruf) sein. Ein ChangeSet ist selbst vom MIME-Typ multipart/mixed mit Unterteilen, die Einfügungs-, Aktualisierungs- oder Löschvorgänge enthalten.

Wichtig

SharePoint- und Office 365-APIs sind nicht transaktional und unterstützen nicht die Funktion „alles oder nichts“ für ChangeSets mit mehr als einem Vorgang. Wenn einer der untergeordneten Vorgänge fehlschlägt, werden die anderen ausgeführt und nicht rückgängig gemacht.

Codebeispiele

Beispiele für Code, der die Abfrageoption $batch für die SharePoint REST/OData-APIs verwendet:

Beispielanforderungen und -antworten

Das folgende Beispiel zeigt eine unformatierte HTTP-Anforderung, die zwei GET-Vorgänge zusammenfasst, die die Titel aller Elemente in zwei verschiedenen Listen abrufen.

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Host: fabrikam.sharepoint.com
Content-Length: 527
Expect: 100-continue

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('Composed%20Looks')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('User%20Information%20List')/items?$select=Title HTTP/1.1

--batch_e3b6819b-13c3-43bb-85b2-24b14122fed1--

Das folgende Beispiel zeigt den Textkörper einer unformatierten HTTP-Anforderung, die ein DELETE einer Liste und ein GET der SharePoint-Liste der Listen zusammenfasst.

POST https://fabrikam.sharepoint.com/_api/$batch HTTP/1.1
Authorization: Bearer <access token omitted>
Content-Type: multipart/mixed; boundary=batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Host: fabrikam.sharepoint.com
Content-Length: 647
Expect: 100-continue

--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: multipart/mixed; boundary=changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d

--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d
Content-Type: application/http
Content-Transfer-Encoding: binary

DELETE https://fabrikam.sharepoint.com/_api/Web/lists/getbytitle('OldList') HTTP/1.1
If-Match: "1"

--changeset_efb6b37c-a5cd-45cb-8f5f-4d648006e65d--
--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e
Content-Type: application/http
Content-Transfer-Encoding: binary

GET https://fabrikam.sharepoint.com/_api/Web/lists HTTP/1.1

--batch_7ba8d60b-efce-4a2f-b719-60c27cc0e70e--

Vorsicht

Batchanforderungen können die Anzahl von Schleifenanforderungen an die SharePoint-REST-API verringern. Das Hochladen mehrerer Dateien in einem einzigen Batch wird jedoch nicht unterstützt.

OData-Bibliotheken

OData-Bibliotheken unterstützen die OData-Batchverarbeitung für viele Sprachen. Es folgen zwei Beispiele. Eine vollständige Liste finden Sie unter OData Libraries OData-Bibliotheken.

Siehe auch