REST API によりバッチ要求を発行するMake batch requests with the REST APIs

この記事では、Microsoft SharePoint Online (およびオンプレミスの SharePoint 2016 以降) の REST/OData API と、Office 365 REST API のファイルとフォルダーのサブセットに対して、複数のクエリや操作をバッチ処理する方法について説明します。This article describes how you can batch queries and operations against the REST/OData API of Microsoft SharePoint Online (and on-premises SharePoint 2016 and later) and the Files and folders subset of the Office 365 REST APIs. このテクニックを使用すれば、多くの操作を組み合わせた単一の要求をサーバーに送り、単一の応答が返されるようにして、アドインのパフォーマンスを改善できます。With this technique you can improve the performance of your add-in by combining many operations into a single request to the server and a single response back.

$batch オプションの概要Executive summary of the $batch option

SharePoint Online (およびオンプレミスの SharePoint 2016 以降) および Office 365 API では、OData $batch クエリ オプションが実装されています。したがって、その詳しい使用方法については、公式ドキュメントで確認できます SharePoint Online (and on-premises SharePoint 2016 and later) and the Office 365 APIs implement the OData $batch query option, so you can rely on the official documentation for details about how to use it. (別の方法として、Andrew Connell のブログで、この論題について書かれた「第 1 部 - SharePoint REST API バッチ操作」以降の投稿を確認することもできます)。(Another option is to see Andrew Connell's blog posts on the subject beginning at Part 1 - SharePoint REST API Batching.)

次に、主要ポイントを示します。The following is a reminder of the major points:

  • 要求 URL は、ルート サービスの URL と $batch オプションで構成されます。たとえば、https://fabrikam.sharepoint.com/_api/$batch またはhttps://fabrikam.office365.com/api/v1.0/me/$batch のようになります。The request URL consists of the root service URL and the $batch option; for example, https://fabrikam.sharepoint.com/_api/$batch or https://fabrikam.office365.com/api/v1.0/me/$batch.

  • HTTP 要求本文は、MIME タイプ multipart/mixed です。The HTTP request body is MIME type multipart/mixed.

  • 要求本文は、要求のヘッダーで指定される境界文字列で区切られた複数のパートに分割されます。The body of the request is divided into parts that are separated from each other by a boundary string that is specified in the header of the request.

  • 本文の各パートには、それぞれ独自の HTTP 動詞と REST URL があり、該当する場合には独自の内部本文があります。Each part of the body has its own HTTP verb and REST URL, and its own internal body when applicable.

  • 1 つのパートは、1 つの読み取り操作 (または関数呼び出し) であるか、1 つ以上の書き込み操作 (または関数呼び出し) からなる 1 つの変更セットとすることができます。A part can be a read operation (or function invocation), or a ChangeSet of one or more write operations (or function invocations). 変更セットは、それ自体 1 つの MIME タイプ multipart/mixed であり、挿入、更新、または削除の操作を含む複数のサブパートを伴います。A ChangeSet is itself a MIME type multipart/mixed with subparts that contain insert, update, or delete operations.

重要

現時点で、SharePoint と Office 365 API において、複数の操作が含まれる変更セットのための「all or nothing (全部処理するか、何も処理しないか)」機能はサポートされていません。At this time, SharePoint and Office 365 APIs do not support "all or nothing" functionality for ChangeSets that have more than one operation within them. 子操作のいずれかが失敗しても、他の操作は実行を完了し、ロールバックされません。If any of the child operations fails, the others still complete and are not rolled back.

コード サンプルCode samples

SharePoint REST/OData API に対して $batch クエリ オプションを使用するコードのサンプル:Samples of code that uses the $batch query option against the SharePoint REST/OData APIs:

要求と応答の例Example requests and responses

2 つの異なるリストに含まれるすべてのアイテムのタイトルを取得する 2 つの GET 操作をバッチ処理する未加工 HTTP 要求の例を次に示します。The following is an example of a raw HTTP request that batches two GET operations that retrieve the titles of all the items in two different lists.

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


リストの DELETE と SharePoint リストのリストの GET をバッチ処理する未加工 HTTP 要求の本文の例を次に示します。The following is an example of the body of a raw HTTP request that batches a DELETE of a list and a GET of the SharePoint list-of-lists.

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

OData ライブラリOData libraries

OData ライブラリは、多くの言語での OData バッチ処理をサポートしています。OData libraries support OData batching for many languages. 次に、2 つの例を示します。Following are two examples. 詳細な一覧については、OData ライブラリ参照してください。For a more complete list, see OData Libraries.

関連項目See also