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 (sowie das lokale SharePoint 2016 und höher) und die Office 365-APIs implementieren die OData-$batch-Abfrageoption. Details zu ihrer Verwendung können Sie der offiziellen Dokumentation entnehmen. 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 Anforderungs-URL besteht aus der Root-Service-URL und der $batch Option; zum 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 einem oder mehreren Schreibvorgängen (oder Funktionsaufrufen) 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ützten keine „Alles oder nichts“-Funktionalität für ChangeSets, die mehr als einen Vorgang beinhalten. Wenn in einem der untergeordneten Vorgänge ein Fehler auftritt, werden die anderen dennoch abgeschlossen und nicht zurückgesetzt.

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--

Achtung

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