Web API 基本操作示例

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

此组示例演示如何使用 Microsoft Dynamics 365 Web API 执行基本 CRUD(创建、检索、更新和删除)以及关联操作。 此示例作为一个单独的项目为以下语言实施:

本主题介绍了本组中每个示例实施的一组普通操作: 本主题介绍本组中各示例将在无语言特定的详细信息的情况下执行的 HTTP 请求和响应以及文本输出。 有关如何执行这些操作的详细信息,请参阅语言特定的说明和单独的示例。

演示

此示例分为以下部分,其中包含指定的关联概念主题中更详细地讨论的 Dynamics 365 Web API 操作。

代码部分

相关概念主题

部分 1:基本创建和更新操作

基本创建
使用返回的数据创建
基本更新
使用返回的数据更新

第 2 部分:使用关联创建

创建时关联实体

第 3 部分:创建相关实体(深层插入)

在一个操作中创建相关实体

第 4 部分:关联和取消关联现有实体

使用 Web API 关联和解除关联实体

第 5 部分:删除实体(示例清除)

基本删除

备注

为了简单起见,忽略了不太相关 HTTP 的标头。 记录的 URL 随 Dynamics 365 服务器分配的基本组织地址和记录的 ID 变化而变化。

部分 1:基本创建和更新操作

本部分创建一个联系人,然后对该实例执行一系列的更新。 请注意,响应标头 ODataEntityId 包含新创建记录(实体实例)的 URL,其中插入了此记录的唯一 ID。

  1. 创建新联系人,名为 Peter Cambel。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/contacts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "firstname": "Peter",
      "lastname": "Cambel"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)
    

    控制台输出

    Contact 'Peter Cambel' created.
    

    可用于每个类型的属性在元数据文档内定义,并在 Web API EntityType Reference部分为每个类型记录。 有关更多一般信息,请参阅 Web API 类型和操作

  2. 更新联系人的年收入 ($80,000) 和职务 (Junior Developer) 值。

    HTTP 请求

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "annualincome": 80000,
      "jobtitle": "Junior Developer"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Contact 'Peter Cambel' updated with job title and annual income.
    
  3. 通过显式初始化属性集检索联系人。fullname 是通过 firstnamelastname 属性计算的只读属性,属性在创建实例时显示初始化。 相反,description 属性未显示初始化,因此其保留默认值,null 字符串。

    请注意,除请求值和典型标头外,响应还自动返回以下类型的其他信息:

    • 当前实体类型的主要 ID,此处为 contactid。

    • @odata.etag 密钥表示的 ETag 值,确定请求的资源的特定版本。 有关详细信息,请参阅使用 Web API 执行条件操作

    • @odata.context 密钥表示的元数据上下文,提供比较查询结果以确定它们是否来自相同查询的方法。

    • 指示货币交易的本地货币的 _transactioncurrencyid_value。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,annualincome,jobtitle,description HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,annualincome,jobtitle,description)/$entity",
       "@odata.etag":"W/\"628883\"",
       "fullname":"Peter Cambel",
       "annualincome":80000.0000,
       "jobtitle":"Junior Developer",
       "description":null,
       "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
       "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
    }
    

    控制台输出

    Contact 'Peter Cambel' retrieved:
            Income: 80000
            Job title: Junior Developer
            Description: .
    

    重要

    在检索操作中应始终使用选择和筛选来优化性能。 有关详细信息,请参阅使用 Web API 查询数据

  4. 通过向这些相同属性提供新值来更新联系人实体实例。

    HTTP 请求

    PATCH http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "jobtitle": "Senior Developer",
      "annualincome": 95000,
      "description": "Assignment to-be-determined"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Contact 'Peter Cambel' updated:
            Job title: Senior Developer
            Annual income: 95000
            Description: Assignment to-be-determined
    

    重要

    只能在更新请求中发送更改的属性。 有关详细信息,请参阅基本更新

  5. 显式设置单个属性,主要电话号码。 请注意,这是 PUT 请求,在对各个属性执行操作时,使用名为 value 的 JSON 密钥。

    HTTP 请求

    PUT http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "value": "555-0105"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Contact 'Peter Cambel' phone number updated.
    
  6. 检索同一个单一属性,主要电话号码。 需再次注意,使用名为 value 的密钥。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1 HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(60f77a42-5f0e-e611-80e0-00155da84c03)/telephone1",
       "value":"555-0105"
    }
    

    控制台输出

    Contact's telephone# is: 555-0105.
    
  7. 创建类似联系人,但是也在同一个操作中返回实例信息。 后一项功能通过 Prefer: return=representation 标头启用。 此功能是在 适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入的,需要 8.2 或更高版本。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    HTTP 响应

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    控制台输出

    Contact 'Peter_Alt Cambel' created:
            Annual income: 80000
            Job title: Junior Developer
    Contact URI: http://cc_WebAPI_ServiceURI/contacts(199250b7-6cbe-e611-80f7-00155da84c08)
    
  8. 更新这个类似联系人,并且也在同一个操作中返回实例信息。 此功能也是通过 Prefer: return=representation 标头启用。 此功能是在 适用于 Dynamics 365 的 2016 年 12 月更新(联机和本地) 中引入的,需要 8.2 或更高版本。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/contacts?$select=fullname,annualincome,jobtitle,contactid HTTP/1.1
    OData-Version: 4.0
    Content-Type: application/json; charset=utf-8
    Prefer: return=representation
    {
      "firstname": "Peter_Alt",
      "lastname": "Cambel",
      "jobtitle": "Junior Developer",
      "annualincome": 80000,
      "telephone1": "555-0110"
    }
    

    HTTP 响应

    HTTP/1.1 201 Created
    Content-Type: application/json; odata.metadata=minimal
    Preference-Applied: return=representation
    OData-Version: 4.0
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts/$entity","@odata.etag":"W/\"758870\"","_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03","annualincome":80000.0000,"contactid":"199250b7-6cbe-e611-80f7-00155da84c08","jobtitle":"Junior Developer","fullname":"Peter_Alt Cambel"
    }
    

    控制台输出

    Contact 'Peter_Alt Cambel' updated:
            Annual income: 95000
            Job title: Senior Developer
    

第 2 部分:使用关联创建

本部分创建名为 Contoso, Ltd. 的新客户实例,并将其与现有联系人关联,Peter Cambel,其在部分 1:基本创建和更新操作创建。 此创建和关联在一个 POST 操作中执行。

  1. 创建 Contoso, Ltd. 客户,并将其主要联系人属性设置为现有联系人 Peter Cambel。@odata.bind 批注指示在创建关联,此处将 primarycontactid 单值导航属性绑定到现有联系人,Peter Cambel。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Contoso Inc",
      "telephone1": "555-5555",
      "primarycontactid@odata.bind": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)
    

    控制台输出

    Account 'Contoso Inc' created.
    
  2. 检索 Contoso, Ltd. 客户的主要联系人,同样使用 primarycontactid 单值导航属性访问关联的contact EntityType$expand

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628886\"",
       "name":"Contoso Inc",
       "accountid":"65f77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628885\"",
          "fullname":"Peter Cambel",
          "jobtitle":"Senior Developer",
          "annualincome":95000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"60f77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    控制台输出

    Account 'Contoso Inc' has primary contact 'Peter Cambel':
         Job title: Senior Developer
         Income: 95000
    

第 3 部分:创建相关实体(深层插入)

本部分演示如何在单次 POST 请求中创建实体实例和相关实体实例。 使用此方法时,新创建所有实例;没有要与之关联的现有实例。 该方法具有两个优点。 将多个简单的创建和关联操作替换为一个组合操作,这样更加高效。 而且,这是不可分割的,或者整个操作成功,创建所有相关对象,或者操作失败,不创建任何对象。

本部分在一个请求中创建客户、其主要联系人和该联系人的一组任务。

  1. 在一个操作中创建客户 Fourth Coffee 及其主要联系人 Susie Curtis 和她的三个相关任务。 请注意,请分别使用单值 primarycontactid 导航属性和集合值导航属性 Contact_Tasks 定义这些关系组。 单值导航属性获取对象值,而集合值导航属性获取数组值。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/accounts HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Fourth Coffee",
      "primarycontactid": {
        "firstname": "Susie",
        "lastname": "Curtis",
        "jobtitle": "Coffee Master",
        "annualincome": 48000,
        "Contact_Tasks": [
          {
            "subject": "Sign invoice",
            "description": "Invoice #12321",
            "scheduledend": "2016-04-19T00:00:00-07:00"
          },
          {
            "subject": "Setup new display",
            "description": "Theme is - Spring is in the air",
            "scheduledstart": "2016-04-20T00:00:00-07:00"
          },
          {
            "subject": "Conduct training",
            "description": "Train team on making our new blended coffee",
            "scheduledstart": "2016-06-01T00:00:00-07:00"
          }
        ]
      }
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)
    

    控制台输出

    Account 'Fourth Coffee' created.
    
  2. 可以选择性地检索新创建的 Fourth Coffee 客户及其主要联系人。 对单值导航属性 primarycontactid 执行扩展。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=primarycontactid($select=fullname,jobtitle,annualincome) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(fullname,jobtitle,annualincome))/$entity",
       "@odata.etag":"W/\"628902\"",
       "name":"Fourth Coffee",
       "accountid":"6af77a42-5f0e-e611-80e0-00155da84c03",
       "primarycontactid":{ 
          "@odata.etag":"W/\"628892\"",
          "fullname":"Susie Curtis",
          "jobtitle":"Coffee Master",
          "annualincome":48000.0000,
          "_transactioncurrencyid_value":"0d4ed62e-95f7-e511-80d1-00155da84c03",
          "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03"
       }
    }
    

    控制台输出

    Account 'Fourth Coffee' has primary contact 'Susie Curtis':
            Job title: Coffee Master
            Income: 48000
    
  3. 可以选择性地检索与在前面操作中检索的主要联系人相关的任务。 对集合值导航属性 Contact_Tasks 执行扩展。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03)?$select=fullname,&$expand=Contact_Tasks($select=subject,description,scheduledstart,scheduledend) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,Contact_Tasks,Contact_Tasks(subject,description,scheduledstart,scheduledend))/$entity",
       "@odata.etag":"W/\"628892\"",
       "fullname":"Susie Curtis",
       "contactid":"6bf77a42-5f0e-e611-80e0-00155da84c03",
       "Contact_Tasks":[ 
          { 
             "@odata.etag":"W/\"628903\"",
             "subject":"Sign invoice",
             "description":"Invoice #12321",
             "scheduledstart":"2016-04-19T00:00:00Z",
             "scheduledend":"2016-04-19T00:00:00Z",
             "activityid":"6cf77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628905\"",
             "subject":"Setup new display",
             "description":"Theme is - Spring is in the air",
             "scheduledstart":"2016-04-20T00:00:00Z",
             "scheduledend":"2016-04-20T00:00:00Z",
             "activityid":"6df77a42-5f0e-e611-80e0-00155da84c03"
          },
          { 
             "@odata.etag":"W/\"628907\"",
             "subject":"Conduct training",
             "description":"Train team on making our new blended coffee",
             "scheduledstart":"2016-06-01T00:00:00Z",
             "scheduledend":"2016-06-01T00:00:00Z",
             "activityid":"6ef77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    控制台输出

    Contact 'Susie Curtis' has the following assigned tasks:
    Subject: Sign invoice,
            Description: Invoice #12321
            Start: 4/19/2016
            End: 4/19/2016
    
    Subject: Setup new display,
            Description: Theme is - Spring is in the air
            Start: 4/20/2016
            End: 4/20/2016
    
    Subject: Conduct training
            Description: Train team on making our new blended coffee,
            Start: 6/1/2016
            End: 6/1/2016
    

第 4 部分:关联和取消关联现有实体

本部分说明如何关联和取消关联现有实体实例。 创建关联需要使用参考 URI 和关系对象,这些随后在 POST 请求中发送。 取消关联需要发送 DELETE 请求到该关联的参考 URI。 首先在联系人和客户之间建立一对多关联。 然后在竞争对手和一个或多个商机之间建立多对多关联。

  1. 使用 contact_customer_accounts 集合值导航属性将 Peter Cambel 作为联系人添加到客户 Fourth Coffee。 请注意,请使用特殊密钥 @odata.id 指定相关记录。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Contact 'Peter Cambel' associated to account 'Fourth Coffee'.
    
  2. 通过检索客户 Fourth Coffee 的联系人集合确认前一项操作。 响应包含含有单个元素——最近分配的联系人 Peter Cambel 的数组。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts?$select=fullname,jobtitle HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0 
    {
      "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#contacts(fullname,jobtitle)","value":[
        {
          "@odata.etag":"W/\"632481\"","fullname":"Peter Cambel","jobtitle":"Senior Developer","contactid":"00b6e0e2-b010-e611-80e1-00155da84c03"
        }
      ]
    }
    

    控制台输出

    Contact list for account 'Fourth Coffee':
            Name: Peter Cambel, Job title: Senior Developer
    
  3. 移除刚才在客户 Fourth Coffee 和联系人 Peter Cambel 之间创建的关联。

    HTTP 请求

    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03)/contact_customer_accounts/$ref?$id=http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Contact 'Peter Cambel' dissociated from account 'Fourth Coffee'.
    
  4. 创建名为 Adventure Works 的竞争对手。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/competitors HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "Adventure Works",
      "strengths": "Strong promoter of private tours for multi-day outdoor adventures"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/accounts(77f77a42-5f0e-e611-80e0-00155da84c03) 
    

    控制台输出

    Competitor 'Adventure Works' created.
    
  5. 创建名为 River rafting adventure 的商机。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/opportunities HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "name": "River rafting adventure",
      "description": "Sales team on a river-rafting offsite and team building"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    OData-Version: 4.0
    OData-EntityId: http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) 
    

    控制台输出

    Opportunity 'River rafting adventure' created.
    
  6. 将此新商机关联到此新竞争对手。 请注意,在此多对多关联中使用与之前的一对多关联中相同的一般语法。

    HTTP 请求

    POST http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    {
      "@odata.id": "http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)"
    }
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Opportunity 'River rafting adventure' associated with competitor 'Adventure Works'.
    
  7. 有选择性地检索与竞争对手 Adventure Works 关联的所有商机。 返回数组,包含单个商机。

    HTTP 请求

    GET http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03)?$select=name,&$expand=opportunitycompetitors_association($select=name,description) HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 200 OK
    { 
       "@odata.context":"http://cc_WebAPI_ServiceURI/$metadata#competitors(name,opportunitycompetitors_association,opportunitycompetitors_association(name,description))/$entity",
       "@odata.etag":"W/\"628913\"",
       "name":"Adventure Works",
       "competitorid":"77f77a42-5f0e-e611-80e0-00155da84c03",
       "opportunitycompetitors_association":[ 
          { 
             "@odata.etag":"W/\"628917\"",
             "name":"River rafting adventure",
             "description":"Sales team on a river-rafting offsite and team building",
             "opportunityid":"7cf77a42-5f0e-e611-80e0-00155da84c03"
          }
       ]
    }
    

    控制台输出

    Competitor 'Adventure Works' has the following opportunities:
            Name: River rafting adventure,
            Description: Sales team on a river-rafting offsite and team building
    
  8. 取消商机与竞争对手的关联。 同样请注意,这里的一般语法与用于移除一对多关联的语法相同。

    HTTP 请求

    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03)/opportunitycompetitors_association/$ref?$id=http://[Token-CRM-Org-Name]/Contoso/api/data/v8.1/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 204 No Content
    

    控制台输出

    Opportunity 'River rafting adventure' disassociated from competitor 'Adventure Works'.
    

第 5 部分:删除实体(示例清除)

此部分演示如何删除实体实例。 对应的消息是使用要删除的实体实例的 URI 的 DELETE 请求。 如果目标实例与其他实体之间存在父子关系,那么删除父实例,默认情况下将自动顺延删除子实例。 例如,在此示例中,任务具有其父项的联系人。 有关详细信息,请参阅实体关系行为

  1. 实体 URL 的集合的每个元素都将删除。 第一个是 Peter Cambel 的联系人记录。

    HTTP 请求

    DELETE http://cc_WebAPI_ServiceURI/contacts(60f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    Content-Type: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    HTTP 响应

    HTTP/1.1 204 No Content
    
  2. 经由集合的连续迭代删除其余记录。

    HTTP 请求

    DELETE http://cc_WebAPI_ServiceURI/accounts(65f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/accounts(6af77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/contacts(6bf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/competitors(77f77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    
    DELETE http://cc_WebAPI_ServiceURI/opportunities(7cf77a42-5f0e-e611-80e0-00155da84c03) HTTP/1.1
    . . .
    

另请参阅

使用 Microsoft Dynamics 365 Web API
使用 Web API 创建实体
使用 Web API 检索实体
使用 Web API 更新和删除实体
使用 Web API 关联和解除关联实体
Web API 基本操作示例 (C#)
Web API 基本操作示例(客户端 JavaScript)

Microsoft Dynamics 365

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