レコードを更新する
レコードを更新するには、sObject Rows リソースを使用します。要求データに更新するレコード情報を指定し、リソースの PATCH メソッドを使用して、特定のレコードの ID を指定し、そのレコードを更新します。1 つのファイルに含まれるレコードは、同じオブジェクト種別である必要があります。
次の例では、Account 内の請求先市区郡の情報 (BillingCity) が更新されます。更新するレコード情報は patchaccount.json に指定されています。
- Account オブジェクトを更新する例
-
1curl https://na1.salesforce.com/services/data/v20.0/sobjects/Account/001D000000INjVe -H "Authorization: Bearer token" -H "Content-Type: application/json" -d @patchaccount.json -X PATCH - Account オブジェクトの項目を更新する場合のリクエストボディ patchaccount.json ファイルの例
-
1{ 2 "BillingCity" : "San Francisco" 3} - Account オブジェクトの項目を更新する場合のレスポンスボディの例
- 戻り値なし
- エラー応答
- 「状況コードとエラー応答」を参照してください。
次の例では、Java と HttpClient を使用し、REST API を使用してレコードを更新します。HttpClient に PatchMethod がないため、PostMethod が上書きされてメソッド名として「PATCH」が返されます。この例では、オブジェクト名とレコード ID が含まれるリソース URL が渡されていると想定します。
任意の HTTP メソッド名の上書きまたは設定を許可しない HTTP ライブラリを使用している場合、POST 要求を送信して、クエリ文字列パラメータ _HttpMethod を介して HTTP メソッドを上書きすることができます。この PATCH の例では、PostMethod の行を上書きを使用しない行に置き換えることができます。
1public static void patch(String url, String sid) throws IOException {
2 PostMethod m = new PostMethod(url) {
3 @Override public String getName() { return "PATCH"; }
4 };
5
6 m.setRequestHeader("Authorization", "OAuth " + sid);
7
8 Map<String, Object> accUpdate = new HashMap<String, Object>();
9 accUpdate.put("Name", "Patch test");
10 ObjectMapper mapper = new ObjectMapper();
11 m.setRequestEntity(new StringRequestEntity(mapper.writeValueAsString(accUpdate), "application/json", "UTF-8"));
12
13 HttpClient c = new HttpClient();
14 int sc = c.executeMethod(m);
15 System.out.println("PATCH call returned a status code of " + sc);
16 if (sc > 299) {
17 // deserialize the returned error message
18 List<ApiError> errors = mapper.readValue(m.getResponseBodyAsStream(), new TypeReference<List<ApiError>>() {} );
19 for (ApiError e : errors)
20 System.out.println(e.errorCode + " " + e.message);
21 }
22 }
23
24 private static class ApiError {
25 public String errorCode;
26 public String message;
27 public String [] fields;
28 }1PostMethod m = new PostMethod(url + "?_HttpMethod=PATCH");