使用 OData 端點執行基礎資料作業
發行︰ 2016年11月
適用於: Dynamics CRM 2015
有多種程式庫或技術可以讓您用來執行 HTTP 請求來使用 OData 端點搭配 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新,執行資料作業。 本主題說明低階的 HTTP 請求的格式。 不論您使用的程式庫或技術,有了像是 Fiddler 這樣的 web 偵錯 proxy 工具,您可以檢查 HTTP 流量和比較您參閱使用 OData 端點需求的結果。 此主題顯示使用 Fiddler 擷取的 HTTP 請求和回覆範例。 在上述範例中的某些內容已盡量簡要,而 <placeholders> 也已包括在內,其中的內容會因為環境變數而有不同。
如需更多關於使用特定技術應用程式的詳細資訊,請參閱:使用 OData 端點搭配 AJAX 和 JScript Web 資源
本主題內容
建立紀錄
使用 ATOM
使用 JSON
擷取記錄
使用 ATOM
使用 JSON
正在更新記錄
使用 PUT 更新
請使用 MERGE 更新
使用 ATOM
使用 JSON
刪除紀錄
使用 ATOM
使用 JSON
HTTP 狀態碼
建立紀錄
新記錄或項目,是透過執行 HTTP 張貼要求而產生 (對建立項目位置的 URI 集合)。 POST 請求包含在其中使用 ATOM 或 JSON 格式的新項目。
伺服器指派預設值至任何未在請求中指定的屬性,並回傳具有「位置」標題的結果 (其中包含建立紀錄的 URL)。 項目標題元素反映實體的主要屬性。 舉例來說,對於 account 實體,name 屬性是主要屬性。 HTTP 狀態代碼 201 表示,成功建立記錄。
如需更多關於其他在相關紀錄的背景中建立新紀錄的資訊,請參閱 使用深層插入。
使用 ATOM
舉例來說,當一個新的 account 紀錄因為使用了受管理程式碼中的System.Data.Services.Client 程式庫而建立時
HTTP 請求
POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept: application/atom+xml,application/xml
Content-Type: application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26629
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<category
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
term="Microsoft.Crm.Sdk.Data.Services.Account"
/>
<title type="text">New Account Created</title>
<author>
<name />
</author>
<updated>2010-07-22T22:51:50.0051481Z</updated>
<id />
<content type="application/xml">
<m:properties>
[ Properties removed for brevity]
</m:properties>
</content>
</entry>
HTTP 回覆
HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 26756
Content-Type: application/atom+xml;charset=utf-8
Location: <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:49 GMT
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
<title type="text">New Account Created</title>
<updated>2010-07-22T22:51:50Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
<category
term="Microsoft.Crm.Sdk.Data.Services.Account"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
/>
<content type="application/xml">
<m:properties>
[Properties removed for brevity]
</m:properties>
</content>
</entry>
本主題內容
使用 JSON
例如,在使用瀏覽器中的 XMLHttpRequest 物件來產生新的客戶紀錄。
HTTP 請求
POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet HTTP/1.1
Content-Type: application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept: application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 25
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
{"Name":"Sample Account"}
HTTP 回覆
HTTP/1.1 201 Created
Cache-Control: no-cache
Content-Length: 17720
Content-Type: application/json;charset=utf-8
Location: <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:40 GMT
{
"d" : {
"__metadata": {
"uri": "<organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c')",
"type": "Microsoft.Crm.Sdk.Data.Services.Account"
},
[Properties removed for brevity]
}
}
本主題內容
擷取記錄
HTTP GET 會在您擷取紀錄時使用。 當在提供了一組特定紀錄的唯一識別碼時,只會擷取該紀錄。 否則,任何以定義的系統查詢選項將會套用,且最多會擷取 50 筆相符於系統查詢選項篩選的記錄。
本主題內容
使用 ATOM
舉例來說,當您在受管理的程式碼中使用 System.Data.Services.Client 程式庫擷取一組新的客戶紀錄。
HTTP 請求
GET <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept-Charset: UTF-8
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
Accept: application/atom+xml,application/xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
HTTP 回覆
HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 28231
Content-Type: application/atom+xml;charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="<organization root>/XRMServices/2011/OrganizationData.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<id><organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
<title type="text">New Account Created </title>
<updated>2010-07-22T22:51:51Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Account" href="AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')" />
[Links removed for brevity]
<category
term="Microsoft.Crm.Sdk.Data.Services.Account"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
/>
<content type="application/xml">
<m:properties>
[Properties removed for brevity]
</m:properties>
</content>
</entry>
本主題內容
使用 JSON
例如,在使用瀏覽器中的 XMLHttpRequest 物件來擷取新的客戶紀錄時。
HTTP 請求
GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type: application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept: application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
HTTP 回覆
GET <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Content-Type: application/json; charset=utf-8
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
Accept: application/json
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Connection: Keep-Alive
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
本主題內容
正在更新記錄
在 OData 中,您可以使用 PUT 方法或 MERGE 方法更新記錄。MERGE 可用來避免 PUT 意義負載過重。
成功的更新回覆包含 HTTP 狀態代碼 204,且不回傳內容。
注意
若要將 Microsoft Dynamics 365 複雜類型的值設定為 null,請將所有複雜類型的屬性設為 null。 如需詳細資訊,請參閱將複雜類型設定為 null。
注意
某些程式庫在送出 PUT 或 MERGE 請求到伺服器時,可能不會包含請求的本體。 做為解決方案,OData 支援經由張貼的方法,使用的是 POST HTTP 運算子。 若要經由方法,請送出 POST HTTP 作業並設定 X-HTTP-Method 標題至您希望執行的 HTTP 作業。 例如,如要送出 MERGE 請求,HTTP 作業應為 POST 且 X-HTTP-Method HTTP 標題應為 MERGE。
使用 PUT 更新
重要
使用 PUT 來更新紀錄會取代使用提供之紀錄的現有紀錄。 所有紀錄中的屬性可以採用請求中提供的值,或是設定至預設值 (如果並未包含在請求中)。 不會取代連結。
要更新個別的屬性時,請使用 PUT。 如需詳細資訊,請參閱更新個別的屬性
請使用 MERGE 更新
在 Microsoft Dynamics 365 一般的更新邏輯符合使用 MERGE 定義的行為。 包含在請求內的屬性值僅會套用到這些屬性中。 其他屬性資料則不會變更。
重要
除非您採用步驟來補救此行為,在受管理程式碼中使用 proxy 類別來更新已擷取的實體紀錄 MERGE 會使用,且所有屬性都會更新。 即使此屬性值未被變更,這也的確會發生。 這在其他事件導向的功能,例如工作流程或外掛程式偵測已經更新的屬性時,可能會導致預期外的副作用。 此外,稽核會在屬性更新時記錄。
更甚者,如果實體執行個體例示而並非擷取,實體的所有屬性會和 MERGE 請求一起回傳。 任何未在程式碼中設定的屬性會為 null。 這些 null 值會針對紀錄複寫所有的現存值。
您可以透過為 DataServiceContextReadingEntity 和 WritingEntity 事件加入事件常式來補救此行為。
本主題內容
使用 ATOM
舉例來說,當使用受管理程式碼中的 System.Data.Services.Client 程式庫來更新客戶紀錄時:
HTTP 請求
POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept: application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: MERGE
Accept-Charset: UTF-8
Content-Type: application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 26753
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<category
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme"
term="Microsoft.Crm.Sdk.Data.Services.Account"
/>
<title type="text">Account updated </title>
<author>
<name />
</author>
<updated>2010-07-22T22:51:51.0053481Z</updated>
<id><organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c')</id>
<content type="application/xml">
<m:properties>
[Properties removed for brevity]
</m:properties>
</content>
</entry>
HTTP 回覆
HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:51 GMT
本主題內容
使用 JSON
例如,在使用瀏覽器中的 XMLHttpRequest 物件來更新客戶紀錄時。
HTTP 請求
POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept: application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: MERGE
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 117
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
{"Name":"Updated Sample","Telephone1":"555-0123","AccountNumber":"ABCDEFGHIJ","EMailAddress1":"someone1@example.com"}
HTTP 回覆
HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:41 GMT
刪除紀錄
使用 POST 請求搭配設定為 DELETE 的 X-HTTP-METHOD 標題,以及要刪除之紀錄的 URI 參照。
注意
雖然 OData 規格表示成功刪除作業應該傳回 HTTP 狀態碼 200 (好),Microsoft Dynamics 365 實作傳回 204 (無內容)。
如需詳細資訊,請參閱關聯及解除關聯記錄。
本主題內容
使用 ATOM
舉例來說,當使用受管理程式碼中的 System.Data.Services.Client 程式庫來刪除客戶紀錄時:
HTTP 請求
POST <organization root>/xrmservices/2011/organizationdata.svc/AccountSet(guid'732b64b6-e395-df11-a492-00155dba380c') HTTP/1.1
Accept: application/atom+xml,application/xml
Accept-Language: en-us
dataserviceversion: 1.0;NetFx
x-http-method: DELETE
Accept-Charset: UTF-8
Content-Type: application/atom+xml
maxdataserviceversion: 2.0;NetFx
Referer: <The URL to the HTML page >
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
HTTP 回覆
HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Thu, 22 Jul 2010 22:51:54 GMT
本主題內容
使用 JSON
例如,在使用瀏覽器中的 XMLHttpRequest 物件來刪除客戶紀錄時。
HTTP 請求
POST <organization root>/XRMServices/2011/OrganizationData.svc/AccountSet(guid'5784bd4a-f595-df11-a492-00155dba380c') HTTP/1.1
Accept: application/json
Accept-Language: en-us
Referer: <The URL to the HTML page sending the request>
x-http-method: DELETE
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1)
Host: <CRM Server>
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Cookie: <cookie data>
Authorization: Negotiate <authentication token>
HTTP 回覆
HTTP/1.1 204 No Content
Cache-Control: no-cache
Content-Length: 0
Server: Microsoft-IIS/7.0
X-AspNet-Version: 4.0.30319
DataServiceVersion: 1.0;
X-Powered-By: ASP.NET
WWW-Authenticate: Negotiate <authentication token>
Date: Fri, 23 Jul 2010 00:57:57 GMT
本主題內容
HTTP 狀態碼
若要關於回傳的 HTTP 狀態碼,請見 OData endpoint Http status codes。
另請參閱
使用 OData 端點搭配 Web 資源
使用 OData 端點執行其他資料作業
使用 OData 端點搭配 AJAX 和 JScript Web 資源
OData endpoint Http status codes
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權