ステップ 4: サンプルコードを実行する
各要求では、REST リソースと共にベース URI を使用します。これらの例のベース URI は https://yourInstance.salesforce.com/services/data です。詳細は、「Force.com REST リソース」を参照してください。
この例では、一連の REST 要求が次のシナリオで使用されます。
- Salesforce バージョンを取得する。
- Salesforce バージョンを使用して、使用可能なリソースのリストを取得する。
- リソースの 1 つを使用して、使用可能なオブジェクトのリストを取得する。
- オブジェクトの 1 つを選択して、そのメタデータの説明を取得する。
- その同じオブジェクトの項目のリストを取得する。
- SOQL クエリを実行して、Account レコードのすべての name 項目の値を取得する。
- Account レコードの 1 つで請求先市区郡の情報 (BillingCity) を更新する。
Salesforce バージョンを取得する
はじめに、使用可能な各 Salesforce バージョンに関する情報を取得します。これを行うには、Versions リソースに要求を送信します。この場合、要求に認証は必要ありません。
1curl https://yourInstance.salesforce.com/services/data/応答ヘッダーを含む、この要求の出力は次のとおりです。
1Content-Length: 88
2Content-Type: application/json;
3charset=UTF-8 Server:
4[
5 {
6 "version":"20.0",
7 "url":"/services/data/v20.0",
8 "label":"Winter '11"
9 }
10 ...
11]出力は、すべての有効なバージョンで使用可能なリソースを指定します (結果には複数の値が含まれる場合があります)。次に、これらのバージョンの 1 つを使用して、それに含まれるリソースを検出します。
リソースのリストを取得する
次のステップは、Salesforce (この例ではバージョン 20.0) で使用可能なリソースのリストを取得します。これを行うには、Resources by Version の要求を送信します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求の出力は、次のとおりです。
1{
2 "sobjects" : "/services/data/v20.0/sobjects",
3 "search" : "/services/data/v20.0/search",
4 "query" : "/services/data/v20.0/query",
5 "recent" : "/services/data/v20.0/recent"
6}この出力から、sobjects が、Salesforce バージョン 20.0 で使用可能なリソースの 1 つであることがわかります。このリソースを次の要求で使用し、使用可能なオブジェクトを取得することができます。
使用可能なオブジェクトのリストを取得する
使用可能なリソースのリストを取得したので、使用可能なオブジェクトのリストを要求できます。これを行うには、Describe Global の要求を送信します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/sobjects/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求の出力は、次のとおりです。
1Transfer-Encoding: chunked
2Content-Type: application/json;
3charset=UTF-8 Server:
4{
5 "encoding" : "UTF-8",
6 "maxBatchSize" : 200,
7 "sobjects" : [ {
8 "name" : "Account",
9 "label" : "Account",
10 "custom" : false,
11 "keyPrefix" : "001",
12 "updateable" : true,
13 "searchable" : true,
14 "labelPlural" : "Accounts",
15 "layoutable" : true,
16 "activateable" : false,
17 "urls" : { "sobject" : "/services/data/v20.0/sobjects/Account",
18 "describe" : "/services/data/v20.0/sobjects/Account/describe",
19 "rowTemplate" : "/services/data/v20.0/sobjects/Account/{ID}" },
20 "createable" : true,
21 "customSetting" : false,
22 "deletable" : true,
23 "deprecatedAndHidden" : false,
24 "feedEnabled" : false,
25 "mergeable" : true,
26 "queryable" : true,
27 "replicateable" : true,
28 "retrieveable" : true,
29 "undeletable" : true,
30 "triggerable" : true },
31 },
32...この出力から、Account オブジェクトが使用可能であることがわかります。Account オブジェクトに関する詳細情報の取得については、次のステップで説明します。
オブジェクトの基本情報を取得する
Account オブジェクトを使用可能なリソースとして特定したため、そのメタデータに関するいくつかの基本情報を取得できます。これを行うには、sObject Basic Information の要求を送信します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/sobjects/Account/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求の出力は、次のとおりです。
1{
2 "objectDescribe" :
3 {
4 "name" : "Account",
5 "updateable" : true,
6 "label" : "Account",
7 "keyPrefix" : "001",
8
9 ...
10
11 "replicateable" : true,
12 "retrieveable" : true,
13 "undeletable" : true,
14 "triggerable" : true
15 },
16 "recentItems" :
17 [
18 {
19 "attributes" :
20 {
21 "type" : "Account",
22 "url" : "/services/data/v20.0/sobjects/Account/001D000000INjVeIAL"
23 },
24 "Id" : "001D000000INjVeIAL",
25 "Name" : "asdasdasd"
26 },
27
28 ...
29
30 ]
31}この出力から、名前や表示ラベルなど、Account オブジェクトのいくつかの基本属性を確認できます。最近使用された Account レコードのリストも取得されています。長さやデフォルト値など、その項目に関する詳細情報が必要な場合があるため、次のステップで、Account オブジェクトに関する詳細情報の取得について説明します。
項目のリストを取得する
Account オブジェクトのメタデータに関するいくつかの基本情報を取得したので、詳細情報を取得できます。これを行うには、sObject Describe の要求を送信します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/sobjects/Account/describe/ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求の出力は、次のとおりです。
1{
2 "name" : "Account",
3 "fields" :
4 [
5 {
6 "length" : 18,
7 "name" : "Id",
8 "type" : "id",
9 "defaultValue" : { "value" : null },
10 "updateable" : false,
11 "label" : "Account ID",
12 ...
13 },
14 ...
15 ],
16 "updateable" : true,
17 "label" : "Account",
18 ...
19 "urls" :
20 {
21 "uiEditTemplate" : "https://yourInstance.salesforce.com/{ID}/e",
22 "sobject" : "/services/data/v20.0/sobjects/Account",
23 "uiDetailTemplate" : "https://yourInstance.salesforce.com/{ID}",
24 "describe" : "/services/data/v20.0/sobjects/Account/describe",
25 "rowTemplate" : "/services/data/v20.0/sobjects/Account/{ID}",
26 "uiNewRecord" : "https://yourInstance.salesforce.com/001/e"
27 },
28 "childRelationships" :
29 [
30 {
31 "field" : "ParentId",
32 "deprecatedAndHidden" : false,
33 ...
34 },
35 ...
36 ],
37
38 "createable" : true,
39 "customSetting" : false,
40 ...
41}この出力から、その項目の属性や子リレーションなど、Account オブジェクトのさらに詳細な情報を確認できます。これで、組織の Account オブジェクトに対する便利なクエリと更新を作成するのに必要な情報を取得できました。次のステップでは、実際にクエリと更新を実行します。
SOQL クエリを実行する
Account オブジェクトの項目名がわかったので、SOQL クエリを実行できます。例として、今回は、すべての取引先名の値のリストを取得します。これを行うには、Query 要求を送信します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/query?q=SELECT+name+from+Account -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1"この要求の出力は、次のとおりです。
1{
2 "done" : true,
3 "totalSize" : 14,
4 "records" :
5 [
6 {
7 "attributes" :
8 {
9 "type" : "Account",
10 "url" : "/services/data/v20.0/sobjects/Account/001D000000IRFmaIAH"
11 },
12 "Name" : "Test 1"
13 },
14 {
15 "attributes" :
16 {
17 "type" : "Account",
18 "url" : "/services/data/v20.0/sobjects/Account/001D000000IomazIAB"
19 },
20 "Name" : "Test 2"
21 },
22 ...
23 ]
24}この出力から使用可能な取引先名のリストを取得します。それぞれの名前の前にある属性には取引先の ID が含まれます。次のステップでは、この情報を使用して、取引先の 1 つを更新します。
レコードの項目を更新する
取引先名と ID を把握できたので、レコードの 1 つを取得し、請求先市区郡の情報 (BillingCity) を更新できます。これを行うには、sObject Rows 要求を送信する必要があります。オブジェクトを更新するには、市区郡に関する新しい情報を提供します。次の情報を含む、patchaccount.json というテキストファイルを作成します。
1{
2 "BillingCity" : "Fremont"
3}REST 要求に、この JSON ファイルを指定します。cURL 表記には、データを指定する場合、—d オプションが必要です。詳細は、http://curl.haxx.se/docs/manpage.htmlを参照してください。
また、REST リソースを更新するために使用される PATCH メソッドを指定します。次の cURL コマンドは、ID 項目を使用して指定された Account レコードを取得し、その市区郡を更新します。
1curl https://yourInstance.salesforce.com/services/data/v20.0/sobjects/Account/001D000000IroHJ -H "Authorization: Bearer access_token" -H "X-PrettyPrint:1" -H "Content-Type: application/json" --data-binary @patchaccount.json -X PATCHレスポンスボディはなく、ヘッダーのみが返されます。
1HTTP/1.1 204 No Content
2Server:
3Content-Length: 0その Account レコードのページを更新すると、請求先住所の市区郡が「Fremont」に変更されていることを確認できます。