使用 OData 终结点执行基本数据操作

 

发布日期: 2016年11月

适用于: Dynamics CRM 2015

可以使用多种库或技术来执行 HTTP 请求,以便使用 OData 端点和 Microsoft Dynamics CRM 2015 和 Microsoft Dynamics CRM Online 2015 更新 执行数据操作。 本主题介绍低级 HTTP 请求的格式。 无论您使用哪种库或技术,通过 Web 调试代理工具(如 Fiddler),都可以检查 HTTP 流量并将看到的结果与 OData 端点的要求进行比较。 本主题提供使用 Fiddler 捕捉到的 HTTP 请求和响应的示例。 在这些示例中,为了简单起见对一些内容进行了编辑,示例中还包括 <placeholders>,此处的内容将因环境变量而异。

有关使用特定技术的应用程序的详细信息,请参阅与 Ajax 和 JScript Web 资源一起使用 OData 终结点

本主题内容

创建记录

  • 使用 ATOM

  • 使用 JSON

检索记录

  • 使用 ATOM

  • 使用 JSON

更新记录

  • 使用 PUT 更新

  • 使用 MERGE 更新

    • 使用 ATOM

    • 使用 JSON

删除记录

  • 使用 ATOM

  • 使用 JSON

HTTP 状态码

创建记录

通过对要创建条目的集合的 URI 执行 HTTP POST 请求可创建新记录或条目。 POST 请求使用 ATOMJSON 格式在其正文中包括新条目。

服务器会为请求中未指定的任何属性指派默认值,并用包含所创建记录的 URL 的“位置”标题返回结果。 条目标题元素反映实体的主属性。 例如,对于 account 实体而言,name 属性是主属性。 HTTP 状态码 201 指示已成功创建记录。

有关在相关记录的上下文中创建新记录的备选方法的详细信息,请参阅使用深层插入

使用 ATOM

例如,当使用 System.Data.Services.Client 库在托管代码中创建新 account 记录时

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 中,可以使用 PUTMERGE 方法来更新记录。MERGE 用于避免重载 PUT 的含义。

成功的更新响应包含 HTTP 状态码 204,并且不返回任何内容。

备注

若要将 Microsoft Dynamics 365 复杂类型值设置为 null,请将该复杂类型的所有属性都设置为 null。 有关详细信息,请参阅将复杂的类型设置为 null

备注

在将 PUT 或 MERGE 请求提交至服务器时,有些库可能不包括请求的正文。 作为一种解决方案,OData 使用 POST HTTP 运算符支持通过 Post 的方法隧道。 若要使用方法隧道,请提交 POST HTTP 操作并将 X-HTTP-Method 标头设置为要执行的 HTTP 操作。 例如,若要提交 MERGE 请求,HTTP 操作应为 POSTX-HTTP-Method HTTP 头应为 MERGE

使用 PUT 更新

重要

使用 PUT 更新记录会用提供的数据替换现有记录。 记录中的所有属性值使用请求中提供的值或设置为默认值(如果请求中未包括这些值)。 不替换链接。

更新各个属性时使用 PUT。 有关详细信息,请参阅更新个体属性

使用 MERGE 更新

Microsoft Dynamics 365 中的典型更新逻辑与通常使用 MERGE 定义的行为一致。 请求中包括的属性值只应用于这些属性。 不更改其他属性数据。

重要

除非您采取步骤缓解此行为,否则在托管代码中使用代理类更新检索到的实体记录时,会使用 MERGE 并更新所有属性。 即使属性值未更改也是如此。 当其他事件驱动的功能(如工作流或插件)检测到属性已更新时,这可能产生不需要的副作用。 而且,审核将记录该属性已更新。

此外,如果实例化而非检索实体实例,则会用 MERGE 请求返回该实体的所有属性。 代码中未设置的所有属性都将为 null。 这些 null 值会覆盖记录的任何现有值。

可以通过为 DataServiceContextReadingEntityWritingEntity 事件实施事件处理程序来缓解此行为。

本主题内容

使用 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 头设置为 X-HTTP-METHODDELETE 请求与要删除记录的 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 状态码

OData endpoint Http status codes中提供了有关返回的 HTTP 状态码的详细信息。

另请参阅

将 OData 终结点用于 Web 资源
使用 OData 终结点执行额外的数据操作
与 Ajax 和 JScript Web 资源一起使用 OData 终结点
OData endpoint Http status codes

© 2017 Microsoft。 保留所有权利。 版权