【Dynamics】WebAPIの機能拡張 作成または更新プログラム上のリターン エンティティ データ
WebAPIでエンティティレコードを作成、更新した際に以前までは作成したレコードのGUIDのみがリターンされていました。今回のアップデートでエンティティのフィールドをリターンすることができるようになりました。
以下、MSDNのサンプルの抜粋です。
Web API を使用してエンティティを作成する
リクエストのサンプル
POST [Organization URI]/api/data/v8.2/accounts?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon HTTP/1.1 OData-MaxVersion: 4.0 OData-Version: 4.0 Accept: application/json Content-Type: application/json; charset=utf-8 Prefer: return=representation { "name": "Sample Account", "creditonhold": false, "address1_latitude": 47.639583, "description": "This is the description of the sample account", "revenue": 5000000, "accountcategorycode": 1 }
レスポンスのサンプル
{ "@odata.context":"https://orgname.api.crm7.dynamics.com/api/data/v8.2/$metadata#accounts(name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon)","value":[ { "@odata.etag":"W/\"635745\"","name":"001","creditonhold":false,"address1_latitude":null,"description":null,"revenue":null,"accountcategorycode":null,"createdon":"2017-01-07T12:07:42Z","_transactioncurrencyid_value":"eee7fb82-6fc8-e611-80fc-c4346bc52044","accountid":"7ccb8ce3-d1d4-e611-80fd-c4346bad16b0" } }
この機能を使うことでCREATEやUPDATE後に何か処理を行う場合に、取得処理を省くことができるようになりました。
追記:リターンエンティティデータを試した際のサンプルコード(備忘)
function CreateRecord(entitySetName, data) { return new Promise(function (resolve, reject) { var req = new XMLHttpRequest(); req.open("POST","api/data/v8.2/accounts?$select=name,creditonhold,address1_latitude,description,revenue,accountcategorycode,createdon", true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.setRequestHeader("Prefer", "return=representation"); req.onreadystatechange = function () { if (this.readyState == 4 /* complete */) { req.onreadystatechange = null; if (this.status == 201) { console.log("JSON.parse:", JSON.parse(this.responseText)); resolve(JSON.parse(this.responseText)); } else { reject(Common.WebAPI.ErrorHandler(req.response)); } } }; req.send(JSON.stringify(data)); });