Batch リソース
このリソースは、クライアントとサーバ間の往復回数を最小限に抑えるために作成します。たとえば、モバイルアプリケーションで、ユーザがフィード項目にいいね! と言うためにボタンをタップすると、レスポンスボディにはいいね! に関する情報が含まれますが、フィード項目に対するいいね! の総数は含まれません。フィード項目にいいね! と言うには、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" : "/v54.0/chatter/feed-elements/feedElementId/capabilities/chatter-likes/items"
6 },
7 {
8 "method" : "Get",
9 "url" : "/v54.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" : "/v54.0/chatter/feeds/news/me" 6 }, 7 { 8 "method" : "Get", 9 "url" : "/v54.0/chatter/feeds/user-profile/me" 10 } 11 ] 12} - プロパティ
-
名前 型 説明 使用可能なバージョン batchRequests Generic Batch Input[] 実行するサブ要求の URL を含む、Batch Request Input リクエストボディのコレクション。 28.0 haltOnError Boolean サブ要求が失敗した場合に、Salesforce がサブ要求の処理を停止するかどうかを制御します。デフォルト値は、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/v54.0/connect/batch に対する POST 要求に、2 つのサブ要求を持つ次のリクエストボディが含まれています。
1{ 2 "batchRequests" : [ 3 { 4 "method" : "Get", 5 "url" : "/v54.0/chatter/feeds/user-profile/me" 6 }, 7 { 8 "method" : "Get", 9 "url" : "/v54.0/chatter/feeds/news/me" 10 } 11 ] 12}Batch Results レスポンスボディには、サブ要求ごとに Batch Result Item レスポンスボディが含まれます。1{ 2 "hasErrors": false, 3 "results": [ 4 { 5 "result": { 6 "feedElementPostUrl": "/services/data/v54.0/chatter/feed-elements", 7 "feedElementsUrl": "/services/data/v54.0/chatter/feeds 8/user-profile/005D0000001LL8OIAW/feed-elements", 9 "isModifiedUrl": null 10 }, 11 "statusCode": 200 12 }, 13 { 14 "result": { 15 "feedElementPostUrl": "/services/data/v54.0/chatter/feed-elements", 16 "feedElementsUrl": "/services/data/v54.0/chatter/feeds 17/news/005D0000001LL8OIAW/feed-elements", 18 "isModifiedUrl": null 19 }, 20 "statusCode": 200 21 } 22 ] 23} - 例: haltOnError が true の場合
- これは前と同じ例ですが、最初のサブ要求にエラーが含まれ、haltOnError が true に設定されています。最初のサブ要求には入力ミスがあります。
1{ 2 "batchRequests" : [ 3 { 4 "method" : "Get", 5 "url" : "/v54.0/chatter/feeds/user-profile/men" 6 }, 7 { 8 "method" : "Get", 9 "url" : "/v54.0/chatter/feeds/news/me" 10 } 11 ], 12 "haltOnError" : "true" 13}Batch Results レスポンスボディには、サブ要求ごとに Batch Result Item レスポンスボディが含まれます。/connect/batch への最上位要求は HTTP 200 を返しますが、最初のサブ要求はリソースが見つからないため HTTP 404 を返します。haltOnError が true であるため、次のサブ要求は HTTP 412 を返します。また、hasErrors は true に設定されています。1{ 2 "hasErrors": true, 3 "results": [ 4 { 5 "result": [{ 6 "errorCode": "NOT_FOUND", 7 "message": "The requested resource does not exist" 8 }], 9 "statusCode": 404 10 }, 11 { 12 "result": [{ 13 "errorCode": "BATCH_PROCESSING_HALTED", 14 "message": "Batch processing halted per request" 15 }], 16 "statusCode": 412 17 } 18 ] 19}
バイナリファイルを含む複数のコメントの投稿
richInput プロパティには、各サブ要求のリクエストボディを含めます。
また、binaryPartName および binaryPartNameAlias プロパティには、バイナリパートに関する情報を含めます。
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/v54.0/connect/batch
8-H 'Authorization: OAuth 00DD00000007HoR!...' --insecure1https://instance_name/services/data/v54.0/connect/batch
2
3Authorization: OAuth 00DD0000000Jhd2!...
4Accept: application/json
5Host: instance_name
6Content-Type: multipart/form-data; boundary=123123
7
8--123123
9Content-Disposition: form-data; name="json"
10Content-Type: application/json
11
12{
13 "haltOnError":true,
14 "batchRequests":[
15 {
16 "url":"/v54.0/chatter/feed-elements/0D5D0000000YG0D/capabilities/comments/items",
17 "method":"Post",
18 "binaryPartName":"binaryPart1",
19 "binaryPartNameAlias":"feedElementFileUpload",
20 "richInput":{
21 "body":{
22 "messageSegments":[
23 {
24 "type":"Text",
25 "text":"Check out this file, it may help."
26 }
27 ]
28 },
29 "capabilities":{
30 "content":{
31 "title":"Presentation1.txt"
32 }
33 }
34 }
35 },
36 {
37 "url":"/v54.0/chatter/feed-elements/0D5D0000000YG0H/capabilities/comments/items",
38 "method":"Post",
39 "binaryPartName":"binaryPart2",
40 "binaryPartNameAlias":"feedElementFileUpload",
41 "richInput":{
42 "body":{
43 "messageSegments":[
44 {
45 "type":"Text",
46 "text":"Check out this file, it may help."
47 }
48 ]
49 },
50 "capabilities":{
51 "content":{
52 "title":"Presentation2.txt"
53 }
54 }
55 }
56 }
57 ]
58}
59
60
61--123123
62Content-Disposition: form-data; name="binaryPart1"; filename="Presentation1.txt"
63Content-Type: application/octet-stream; charset=ISO-8859-1
64Content-Transfer-Encoding: binary
65
66This is the content of file 1
67--123123
68Content-Disposition: form-data; name="binaryPart2"; filename="Presentation2.txt"
69Content-Type: application/octet-stream; charset=ISO-8859-1
70Content-Transfer-Encoding: binary
71
72This is the content of file 2
73--123123--