この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Batch リソース

最大 25 個のサブ要求から成るバッチを含むリクエストボディを作成し、1 つの要求としてサーバに送信して、アプリケーションのパフォーマンスを向上させます。バッチ内の各サブ要求のレスポンスボディと HTTP 状況は、1 つのレスポンスボディ内で返されます。各サブ要求は、レート制限にカウントされます。

このリソースは、クライアントとサーバ間の往復回数を最小限に抑えるために作成します。たとえば、モバイルアプリケーションで、ユーザがフィード項目にいいね! と言うためにボタンをタップすると、レスポンスボディにはいいね! に関する情報が含まれますが、フィード項目に対するいいね! の総数は含まれません。フィード項目にいいね! と言うには、POST で要求を /chatter/feed-elements/feedElementId/capabilities/chatter-likes/items に送信します。いいね! の合計を取得するには、GET で /chatter/feed-elements/feedElementId/capabilities/chatter-likes/items からフィード項目情報を取得します。

次のように、両方の要求を Generic Batch Collection Input リクエストボディに追加し、1 つの POST 要求で両方を /connect/batch に送信します。

1{
2   "batchRequests" : [
3    {
4       "method" : "Post",
5       "url" : "/v34.0/chatter/feed-elements/feedElementId/capabilities/chatter-likes/items"
6    },
7    {
8       "method" : "Get",
9       "url" : "/v34.0/chatter/feed-elements/feedElementId/capabilities/chatter-likes/items"
10    }
11   ],
12   "haltOnError" : "false"
13}

バッチ内の各要求はサブ要求と呼ばれます。サブ要求はすべて同じユーザのコンテキスト内で実行されます。各サブ要求は独立しており、相互に情報を渡すことはできません。サブ要求は、リクエストボディ内の順序に従って実行されます。サブ要求が正常に実行されると、データがコミットされます。コミットは、以降のサブ要求の出力に反映されます (前の例のように、フィード項目にいいね! と言ってから、いいね! の総数を取得するなど)。サブ要求が失敗した場合、前のサブ要求で行われたコミットはロールバックされません。

リソース
1/connect/batch
適用開始バージョン
28.0
Chatter が必要かどうか
いいえ
HTTP メソッド
POST
リクエストボディ
Generic Batch Collection Input
ルート XML タグ
<batch>
JSON
1{
2   "batchRequests" : [
3    {
4       "method" : "Get",
5       "url" : "/v34.0/chatter/feeds/news/me"
6    },
7    {
8       "method" : "Get",
9       "url" : "/v34.0/chatter/feeds/user-profile/me"
10    }
11   ]
12}
プロパティ
名前 説明 使用可能なバージョン
batchRequests Generic Batch Input[] 実行するサブ要求の URL を含む、Batch Request Input リクエストボディのコレクション。 28.0
haltOnError Boolean デフォルト値は、false です。

値が false で、バッチ内のサブ要求が完了しない場合、Salesforce は、バッチ内の後続のサブ要求を実行しようと試みます。

値が true で、HTTP 応答 400 番台または 500 番台のエラーが含まれるためにバッチ内のサブ要求が完了しない場合、Salesforce は実行を停止します。バッチ内にある後続のサブ要求の実行は試みず、後続のサブ要求ごとに HTTP 412 状況コードと前の要求が失敗したことを示す BATCH_PROCESSING_HALTED エラーメッセージを返します。/connect/batch への最上位要求は、HTTP 200 を返し、応答内の hasErrors プロパティが true に設定されます。

28.0
要求パラメータ
なし。
応答
Batch Results
この単純な例では、https://instance_name/services/data/v34.0/connect/batch に対する POST 要求に、2 つのサブ要求を持つ次のリクエストボディが含まれています。
1swfobject.registerObject("clippy.codeblock-3", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
18   "batchRequests" : [
19    {
20       "method" : "Get",
21       "url" : "/v34.0/chatter/feeds/user-profile/me"
22    },
23    {
24       "method" : "Get",
25       "url" : "/v34.0/chatter/feeds/news/me"
26    }
27   ]
28}
Batch Results レスポンスボディには、サブ要求ごとに Batch Result Item レスポンスボディが含まれます。
1swfobject.registerObject("clippy.codeblock-4", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
18   "hasErrors": false,
19   "results": [
20      {
21         "result": {
22            "feedElementPostUrl": "/services/data/v34.0/chatter/feed-elements",
23            "feedElementsUrl": "/services/data/v34.0/chatter/feeds
24/user-profile/005D0000001LL8OIAW/feed-elements",
25            "isModifiedUrl": null
26         },
27         "statusCode": 200
28      },
29      {
30         "result": {
31            "feedElementPostUrl": "/services/data/v34.0/chatter/feed-elements",
32            "feedElementsUrl": "/services/data/v34.0/chatter/feeds
33/news/005D0000001LL8OIAW/feed-elements",
34            "isModifiedUrl": null
35         },
36         "statusCode": 200
37      }
38   ]
39}
例: haltOnErrortrue の場合
これは前と同じ例ですが、最初のサブ要求にエラーが含まれ、haltOnErrortrue に設定されています。最初のサブ要求には入力ミスがあります。
1swfobject.registerObject("clippy.codeblock-5", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
18   "batchRequests" : [
19    {
20       "method" : "Get",
21       "url" : "/v34.0/chatter/feeds/user-profile/men"
22    },
23    {
24       "method" : "Get",
25       "url" : "/v34.0/chatter/feeds/news/me"
26    }
27   ],
28   "haltOnError" : "true"
29}
Batch Results レスポンスボディには、サブ要求ごとに Batch Result Item レスポンスボディが含まれます。/connect/batch への最上位要求は HTTP 200 を返しますが、最初のサブ要求はリソースが見つからないため HTTP 404 を返します。haltOnErrortrue であるため、次のサブ要求は HTTP 412 を返します。また、hasErrorstrue に設定されています。
1swfobject.registerObject("clippy.codeblock-6", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
18   "hasErrors": true,
19   "results": [
20      {
21         "result": [{
22            "errorCode": "NOT_FOUND",
23            "message": "The requested resource does not exist"
24         }],
25         "statusCode": 404
26      },
27      {
28         "result": [{
29            "errorCode": "BATCH_PROCESSING_HALTED",
30            "message": "Batch processing halted per request"
31         }],
32         "statusCode": 412
33      }
34   ]
35}
バイナリファイルを含む複数のコメントの投稿
この例は、2 つのサブ要求が含まれる https://instance_name/services/data/v34.0/connect/batch への汎用バッチ要求です。各サブ要求はフィード項目にコメントし、バイナリファイルをコメントにアップロードします。
richInput プロパティには、各サブ要求のリクエストボディを含める必要があります。
また、binaryPartName および binaryPartNameAlias プロパティには、バイナリパートに関する情報を含める必要もあります。
次に cURL の例を示します。
1curl -H "X-PrettyPrint: 1" -F 'json={ "haltOnError":true, "batchRequests":[ { "url":"/v33.0/chatter/feed-elements/0D5D0000000YG0N/capabilities/comments/items", 
2"method":"Post", "binaryPartName":"binaryPart1", "binaryPartNameAlias":"feedElementFileUpload", "richInput":{ "body":{ "messageSegments":[ { "type":"Text", "text":"Check out this file, it may help." } ] },
3 "capabilities":{ "content":{ "title":"Presentation1.txt" } } } }, { "url":"/v33.0/chatter/feed-elements/0D5D0000000YG0M/capabilities/comments/items", 
4"method":"Post", "binaryPartName":"binaryPart2", "binaryPartNameAlias":"feedElementFileUpload", "richInput":{ "body":{ "messageSegments":[ { "type":"Text", "text":"Check out this file, it may help." } ] },
5 "capabilities":{ "content":{ "title":"Presentation2.txt" } } } } ] };type=application/json' -F "binaryPart1=@/Users/jbleyle/Desktop/Presentation1.txt;type=application/octet-stream" 
6-F "binaryPart2=@/Users/jbleyle/Desktop/Presentation2.txt;type=application/octet-stream" 
7-X POST https://instance_name/services/data/v34.0/connect/batch 
8-H 'Authorization: OAuth 00DD00000007HoR!...' --insecure
これは、マルチパート/フォームデータリクエストボディです。
1swfobject.registerObject("clippy.codeblock-8", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17https://instance_name/services/data/v34.0/connect/batch
18
19Authorization: OAuth 00DD0000000Jhd2!...
20Accept: application/json
21Host: instance_name
22Content-Type: multipart/form-data; boundary=123123
23
24--123123
25Content-Disposition: form-data; name="json"
26Content-Type: application/json
27
28{
29   "haltOnError":true,
30   "batchRequests":[
31      {
32         "url":"/v34.0/chatter/feed-elements/0D5D0000000YG0D/capabilities/comments/items",
33         "method":"Post",
34         "binaryPartName":"binaryPart1",
35         "binaryPartNameAlias":"feedElementFileUpload",
36         "richInput":{
37            "body":{
38               "messageSegments":[
39                  {
40                     "type":"Text",
41                     "text":"Check out this file, it may help."
42                  }
43               ]
44            },
45            "capabilities":{
46               "content":{
47                  "title":"Presentation1.txt"
48               }
49            }
50         }
51      },
52      {
53         "url":"/v34.0/chatter/feed-elements/0D5D0000000YG0H/capabilities/comments/items",
54         "method":"Post",
55         "binaryPartName":"binaryPart2",
56         "binaryPartNameAlias":"feedElementFileUpload",
57         "richInput":{
58            "body":{
59               "messageSegments":[
60                  {
61                     "type":"Text",
62                     "text":"Check out this file, it may help."
63                  }
64               ]
65            },
66            "capabilities":{
67               "content":{
68                  "title":"Presentation2.txt"
69               }
70            }
71         }
72      }
73   ]
74}
75
76
77--123123
78Content-Disposition: form-data; name="binaryPart1"; filename="Presentation1.txt"
79Content-Type: application/octet-stream; charset=ISO-8859-1
80Content-Transfer-Encoding: binary
81
82This is the content of file 1
83--123123
84Content-Disposition: form-data; name="binaryPart2"; filename="Presentation2.txt"
85Content-Type: application/octet-stream; charset=ISO-8859-1
86Content-Transfer-Encoding: binary
87
88This is the content of file 2
89--123123--
90