共用方式為


使用 Web API 查詢資料

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

如果您要從實體集擷取資料,使用 GET 要求。 擷取資料時,您可以套用查詢選項來設定您所要資料的準則,以及應傳回的實體屬性。

本主題內容

基本查詢範例

限制傳回的實體數目

指定頁面中要傳回的實體數目

套用系統查詢選項

要求特殊屬性

篩選結果

排序結果

使用參數別名搭配系統查詢選項

限制結果

擷取實體計數

包含格式化的值

擷取有關查詢屬性的資料

根據單一值導覽屬性篩選記錄

藉由展開導覽屬性擷取相關實體

基本查詢範例

此範例會查詢 accounts 實體集並使用 $select$top 系統查詢選項傳回前三個客戶的 name 屬性:

  • 要求

    GET cc_WebAPI_ServiceURI/accounts?$select=name&$top=3 HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • Response

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    
    {
     "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name)",
     "value": [
      {
       "@odata.etag": "W/\"501097\"",
       "name": "Fourth Coffee (sample)",
       "accountid": "89390c24-9c72-e511-80d4-00155d2a68d1"
      },
      {
       "@odata.etag": "W/\"501098\"",
       "name": "Litware, Inc. (sample)",
       "accountid": "8b390c24-9c72-e511-80d4-00155d2a68d1"
      },
      {
       "@odata.etag": "W/\"501099\"",
       "name": "Adventure Works (sample)",
       "accountid": "8d390c24-9c72-e511-80d4-00155d2a68d1"
      }
     ]
    }
    

限制傳回的實體數目

除非您指定較小的頁面大小,否則每個要求最多將傳回 5000 個實體。 如果有更多實體符合查詢篩選準則,則會傳回 @odata.nextLink 屬性且包含結果。 使用 @odata.nextLink 屬性的值與新的 GET 要求傳回資料的下一頁。

注意

模型實體上的查詢不受限制也不會分頁。其他資訊:使用 Web API 查詢中繼資料

指定頁面中要傳回的實體數目

使用 odata.maxpagesize 偏好值要求回覆中傳回的實體數目。

注意

您無法使用大於 5000 的 odata.maxpagesize 偏好值。

下列範例會查詢 accounts 實體集,並傳回前三個客戶的 name 屬性。

  • 要求

    GET cc_WebAPI_ServiceURI/accounts?$select=name HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    Prefer: odata.maxpagesize=3
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    Content-Length: 402
    Preference-Applied: odata.maxpagesize=3
    
    {
      "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name)",
      "value": [
        {
          "@odata.etag": "W/\"437194\"",
          "name": "Fourth Coffee (sample)",
          "accountid": "7d51925c-cde2-e411-80db-00155d2a68cb"
        },
        {
          "@odata.etag": "W/\"437195\"",
          "name": "Litware, Inc. (sample)",
          "accountid": "7f51925c-cde2-e411-80db-00155d2a68cb"
        },
        {
          "@odata.etag": "W/\"468026\"",
          "name": "Adventure Works (sample)",
          "accountid": "8151925c-cde2-e411-80db-00155d2a68cb"
        }
      ],
      "@odata.nextLink": "cc_WebAPI_ServiceURI/accounts?$select=name&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b8151925C-CDE2-E411-80DB-00155D2A68CB%257d%2522%2520first%253d%2522%257b7D51925C-CDE2-E411-80DB-00155D2A68CB%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20/%3E"
    }
    

使用 @odata.nextLink 屬性的值要求下一個記錄集合。 不要變更或附加任何額外的系統查詢選項至值。 對於後續每個額外頁面的要求,您應使用相同的 odata.maxpagesize 偏好值,與原始要求中使用的相同。 此外,快取傳回的結果或 @odata.nextLink 屬性的值,以便傳回先前擷取的頁面。

注意

@odata.nextLink 屬性的值為 URI 編碼。 如果您在傳送值之前先進行 URI 編碼,URL 中的 XML Cookie 資訊將造成錯誤。

套用系統查詢選項

您附加至實體集的 URL 的每個系統查詢選項,都會使用查詢字串語法新增。 第一個附加於 [?] 後面,後續查詢選項會使用 [&] 分隔。 所有查詢選項都區分大小寫,如以下範例所示。

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue&$top=3&$filter=revenue gt 100000

要求特殊屬性

使用 $select 系統查詢選項限制傳回的屬性,如以下範例中所示。

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue

重要

這是效能的最佳作法。 如果未使用 $select 指定屬性,則會傳回所有屬性。

當您要求特定類型的屬性時,可預期會自動傳回額外的唯讀屬性。

如果您要求金額值,_transactioncurrencyid_value 查詢屬性將會傳回。 此屬性只包含交易貨幣的 GUID 值,因此您可以使用此值利用 transactioncurrency EntityType 擷取有關貨幣的資訊。 或者,要求註解也可以在相同要求中取得額外的資料。其他資訊:擷取有關查詢屬性的資料

如果您要求的屬性屬於地址的複合屬性,則也會收到該複合屬性。 例如,如果您的查詢要求連絡人的 address1_line1 屬性,則也會傳回 address1_composite 屬性。其他資訊:5bc03503-649d-42b5-a21f-e642c9923453#BKMK_CompositeAttributes。

篩選結果

使用 $filter 系統查詢選項設定要傳回的實體依據的準則。

標準篩選運算子

Web API 支援標準 OData 篩選運算子,如下表所列出。

運算子

描述

範例

比較運算子

eq

等於

$filter=revenue eq 100000

ne

不等於

$filter=revenue ne 100000

gt

大於

$filter=revenue gt 100000

ge

大於或等於

$filter=revenue ge 100000

lt

小於

$filter=revenue lt 100000

le

小於或等於

$filter=revenue le 100000

邏輯運算子

and

邏輯 AND

$filter=revenue lt 100000 and revenue gt 2000

or

邏輯 OR

$filter=contains(name,'(sample)') or contains(name,'test')

not

邏輯否定

$filter=not contains(name,'sample')

分組運算子

( )

優先順序分組

(contains(name,'sample') or contains(name,'test')) and revenue gt 5000

注意

這是 11.2.5.1.1 內建篩選作業的子集。 Web API 不支援算術運算子和比較 has 運算子。

標準查詢函數

Web API 支援這些標準 OData 字串查詢函數。

函數

範例

contains

$filter=contains(name,'(sample)')

endswith

$filter=endswith(name,'Inc.')

startswith

$filter=startswith(name,'a')

注意

這是 11.2.5.1.2 內建查詢函數的子集。 Web API 不支援 DateMathTypeGeo 和其他字串函數。

Microsoft Dynamics 365 Web API 查詢函數

Microsoft Dynamics 365 提供一些特殊函數,可接受參數、傳回布林值,以及可做為查詢中的篩選準則使用。 如需這些函數的清單,請參閱 Web API Query Function Reference。 以下是 Between Function 搜尋員工數介於 5 和 2000 之間的客戶的範例。

GET cc_WebAPI_ServiceURI/accounts?$select=name,numberofemployees&$filter=Microsoft.Dynamics.CRM.Between(PropertyName='numberofemployees',PropertyValues=["5","2000"])

其他資訊:使用函數撰寫查詢.

排序結果

指定傳回項目的排序依據,使用 $orderby 系統查詢選項。 使用 ascdesc 尾碼分別指定遞增或遞減順序。 預設為遞增,如果未套用尾碼。 下列範例顯示擷取客戶的名稱和營收屬性,依遞增營收和遞減名稱排序。

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue,&$orderby=revenue asc,name desc&$filter=revenue ne null

使用參數別名搭配系統查詢選項

您可以使用參數別名做為 $filter$orderby 系統查詢選項。 參數別名可讓相同值在要求中多次使用。 如果別名沒有指派的值,則會假設為 null。

沒有參數別名

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue,&$orderby=revenue asc,name desc&$filter=revenue ne null

有參數別名

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue,&$orderby=@p1 asc,@p2 desc&$filter=@p1 ne @p3&@p1=revenue&@p2=name

使用函數時,您也可以使用參數別名。其他資訊:使用 Web API 功能

限制結果

您可以使用 $top 系統查詢選項限制傳回的結果數目。 下列範例只會傳回前三個客戶實體。

GET cc_WebAPI_ServiceURI/accounts?$select=name,revenue&$top=3

注意

限制結果,使用 $top 將會避免套用 odata.maxpagesize 偏好。 您可以使用 odata.maxpagesize 偏好或 $top,但無法兩者同時使用。 如需更多 odata.maxpagesize 的資訊,請參閱 指定頁面中要傳回的實體數目。

您也應該不要使用 $top 搭配 $count

擷取實體計數

使用 $count 系統查詢選項且值為 true,可包括符合最多 5000 的篩選準則之實體計數。

注意

計數值不代表系統中實體的總數。 它受限於可傳回的實體數目上限。其他資訊:限制傳回的實體數目

回覆 @odata.count 屬性將包含符合篩選準則的實體數目,無論 odata.maxpagesize 偏好限制為何。

注意

您應該不要使用 $top 搭配 $count

以下範例顯示有十個客戶符合準則,名稱中包含 "sample",但只會傳回前三個客戶。

  • 要求

    GET cc_WebAPI_ServiceURI/accounts?$select=name&$filter=contains(name,'sample')&$count=true HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    Prefer: odata.maxpagesize=3
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    Preference-Applied: odata.maxpagesize=3
    
    {
      "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name)",
    "@odata.count":10,
    "value":[
        {
          "@odata.etag":"W/\"502482\"","name":"Fourth Coffee (sample)","accountid":"655eaf89-f083-e511-80d3-00155d2a68d3"
        },{
          "@odata.etag":"W/\"502483\"","name":"Litware, Inc. (sample)","accountid":"675eaf89-f083-e511-80d3-00155d2a68d3"
        },{
          "@odata.etag":"W/\"502484\"","name":"Adventure Works (sample)","accountid":"695eaf89-f083-e511-80d3-00155d2a68d3"
        }
      ],"@odata.nextLink":"cc_WebAPI_ServiceURI/accounts?$select=name&$filter=contains(name,'sample')&$skiptoken=%3Ccookie%20pagenumber=%222%22%20pagingcookie=%22%253ccookie%2520page%253d%25221%2522%253e%253caccountid%2520last%253d%2522%257b695EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520first%253d%2522%257b655EAF89-F083-E511-80D3-00155D2A68D3%257d%2522%2520%252f%253e%253c%252fcookie%253e%22%20istracking=%22False%22%20/%3E"
    }
    

如果您不希望傳回任何資料,除了計數之外,可以套用 $count 至任何集合,以只取得值。

  • 要求

    GET cc_WebAPI_ServiceURI/accounts/$count HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: text/plain
    OData-Version: 4.0
    
    10
    

包含格式化的值

如果您想要在結果中接收格式化的屬性值,使用 odata.include-annotations 偏好及值 OData.Community.Display.V1.FormattedValue。 回覆將包含這些值與符合下列命名慣例的屬性:

<propertyname>@OData.Community.Display.V1.FormattedValue

下列範例會查詢客戶實體集,並傳回第一筆記錄,包括支援格式化值的屬性。

  • 要求

    GET cc_WebAPI_ServiceURI/accounts?$select=name,donotpostalmail,accountratingcode,numberofemployees,revenue&$top=1 HTTP/1.1
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    Prefer: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    Preference-Applied: odata.include-annotations="OData.Community.Display.V1.FormattedValue"
    
    {
     "@odata.context": "cc_WebAPI_ServiceURI/$metadata#accounts(name,donotpostalmail,accountratingcode,numberofemployees,revenue)",
     "value": [
     {
      "@odata.etag": "W/"502170"",
      "name": "Fourth Coffee (sample)",
      "donotpostalmail@OData.Community.Display.V1.FormattedValue": "Allow",
      "donotpostalmail": false,
      "accountratingcode@OData.Community.Display.V1.FormattedValue": "Default Value",
      "accountratingcode": 1,
      "numberofemployees@OData.Community.Display.V1.FormattedValue": "9,500",
      "numberofemployees": 9500,
      "revenue@OData.Community.Display.V1.FormattedValue": "$100,000.00",
      "revenue": 100000,
      "accountid": "89390c24-9c72-e511-80d4-00155d2a68d1",
      "transactioncurrencyid_value": "50b6dd7b-f16d-e511-80d0-00155db07cb1" } ]
    }
    

擷取有關查詢屬性的資料

如果查詢包括查詢屬性,您可以要求註解,其中將提供有關這些屬性中的資料的額外資訊。 通常相同的資料可利用單一值導覽屬性的知識及相關實體中包括的資料衍生。 不過,有時候屬性 (Property) 代表查詢屬性 (Attribute),可能會參考不只一種實體,這項資訊可能會指出查詢屬性參考實體類型。其他資訊:d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_lookupProperties

另外還有兩種註解可用於這些屬性。

Annotation

描述

Microsoft.Dynamics.CRM.associatednavigationproperty

單一值導覽屬性的名稱,包括實體參考。

Microsoft.Dynamics.CRM.lookuplogicalname

查詢所參考之實體的邏輯名稱。

這些屬性也可包括格式化的值,如包含格式化的值中所述。 就像格式化的值,您可以傳回其他註解,使用設定為您要的特定註解類型的 odata.include-annotations 偏好,或是將值設定為 "*" 並傳回全部三個。 下列範例顯示要求和回應,以擷取有關 incident 實體 _customerid_value 查詢屬性 (內含註解) 的資訊。

  • 要求

    GET cc_WebAPI_ServiceURI/incidents(39dd0b31-ed8b-e511-80d2-00155d2a68d4)?$select=title,customerid_value&$expand=customerid_contact($select=fullname) HTTP/1.1
    Accept: application/json
    Content-Type: application/json; charset=utf-8
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    Prefer: odata.include-annotations="*"
    
  • 回覆

    HTTP/1.1 200 OK
    Content-Type: application/json; odata.metadata=minimal
    OData-Version: 4.0
    Preference-Applied: odata.include-annotations="*"
    
    {
       "@odata.context":"cc_WebAPI_ServiceURI/$metadata#incidents(title,_customerid_value,customerid_contact(fullname))/$entity",
       "@odata.etag":"W/\"504696\"",
       "_customerid_value@Microsoft.Dynamics.CRM.associatednavigationproperty":"customerid_contact",
       "_customerid_value@Microsoft.Dynamics.CRM.lookuplogicalname":"contact",
       "_customerid_value@OData.Community.Display.V1.FormattedValue":"Susanna Stubberod (sample)",
       "_customerid_value":"7ddd0b31-ed8b-e511-80d2-00155d2a68d4",
       "incidentid":"39dd0b31-ed8b-e511-80d2-00155d2a68d4",
       "customerid_contact":{
          "@odata.etag":"W/\"503587\"",
          "fullname":"Susanna Stubberod (sample)",
          "contactid":"7ddd0b31-ed8b-e511-80d2-00155d2a68d4"
       }
    }
    

根據單一值導覽屬性篩選記錄

導覽屬性可讓您存取與目前實體相關的資料。單一值導覽屬性對應查詢屬性,支援多對一關聯並允許設定另一個實體的參考。其他資訊:d80cfb87-d4f1-4c75-bcc8-4f54d1351e26#bkmk_navprops

您可以依據單一值導覽屬性值篩選實體集記錄。 例如,您可以擷取指定客戶的子客戶。 您只能使用單一值導覽屬性參照的主要實體屬性值篩選記錄。 例如:

  • 擷取所有符合指定連絡人識別碼的客戶

    • 要求

      GET cc_WebAPI_ServiceURI/accounts?$select=name&$filter=primarycontactid/contactid%20eq%20a0dbf27c-8efb-e511-80d2-00155db07c77 HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • 回覆

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name)",
           "value":[
          {
            "@odata.etag":"W/\"513479\"",
            "name":"Adventure Works (sample)",
            "accountid":"3adbf27c-8efb-e511-80d2-00155db07c77"
          },{
            "@odata.etag":"W/\"514057\"",
            "name":"Blue Yonder Airlines (sample)",
            "accountid":"3edbf27c-8efb-e511-80d2-00155db07c77"
          }
        ]
      }
      
  • 擷取指定客戶識別碼的子客戶。

    • 要求

      GET cc_WebAPI_ServiceURI/accounts?$select=name&$filter=parentaccountid/accountid%20eq%203adbf27c-8efb-e511-80d2-00155db07c77
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • 回覆

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name)",
          "value":[
          {
            "@odata.etag":"W/\"514058\"",
            "name":"Sample Child Account 1",
            "accountid":"915e89f5-29fc-e511-80d2-00155db07c77"
          },{
            "@odata.etag":"W/\"514061\"",
            "name":"Sample Child Account 2",
            "accountid":"03312500-2afc-e511-80d2-00155db07c77"
          }
        ]
      }
      

藉由展開導覽屬性擷取相關實體

在導覽屬性中使用 $expand 系統查詢選項來控制要從相關實體傳回哪些資料。 導覽屬性有兩種類型:

  • 單一值導覽屬性對應查詢屬性,支援多對一關聯並允許設定另一個實體的參考。

  • 集合值導覽屬性對應至一對多或多對多關聯。

如果您僅包含導覽屬性的名稱,則會收到相關記錄的所有屬性。 您可以限制針對相關記錄傳回的屬性,於導覽屬性名稱後面在括號中使用 $select 系統查詢選項。 針對單一值和集合值導覽屬性使用此方式。

注意

若要擷取實體執行個體的相關實體,請參閱藉由展開導覽屬性擷取實體的相關實體

  • 藉由展開單一值導覽屬性擷取相關實體:下列範例示範如何擷取所有客戶記錄的連絡人。 對於相關連絡人記錄,我們只會擷取 contactid 及 fullname。

    • 要求

      GET cc_WebAPI_ServiceURI/accounts?$select=name&$expand=primarycontactid($select=contactid,fullname) HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • 回覆

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,primarycontactid(contactid,fullname))","value":[
          {
            "@odata.etag":"W/\"513475\"","name":"Fourth Coffee (sample)","accountid":"36dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"9cdbf27c-8efb-e511-80d2-00155db07c77","fullname":"Yvonne McKay (sample)"
            }
          },{
            "@odata.etag":"W/\"513477\"","name":"Litware, Inc. (sample)","accountid":"38dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"9edbf27c-8efb-e511-80d2-00155db07c77","fullname":"Susanna Stubberod (sample)"
            }
          },{
            "@odata.etag":"W/\"513479\"","name":"Adventure Works (sample)","accountid":"3adbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"a0dbf27c-8efb-e511-80d2-00155db07c77","fullname":"Nancy Anderson (sample)"
            }
          },{
            "@odata.etag":"W/\"513481\"","name":"Fabrikam, Inc. (sample)","accountid":"3cdbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"a2dbf27c-8efb-e511-80d2-00155db07c77","fullname":"Maria Campbell (sample)"
            }
          },{
            "@odata.etag":"W/\"514057\"","name":"Blue Yonder Airlines (sample)","accountid":"3edbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"a0dbf27c-8efb-e511-80d2-00155db07c77","fullname":"Nancy Anderson (sample)"
            }
          },{
            "@odata.etag":"W/\"513485\"","name":"City Power & Light (sample)","accountid":"40dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"a6dbf27c-8efb-e511-80d2-00155db07c77","fullname":"Scott Konersmann (sample)"
            }
          },{
            "@odata.etag":"W/\"513487\"","name":"Contoso Pharmaceuticals (sample)","accountid":"42dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"a8dbf27c-8efb-e511-80d2-00155db07c77","fullname":"Robert Lyon (sample)"
            }
          },{
            "@odata.etag":"W/\"513489\"","name":"Alpine Ski House (sample)","accountid":"44dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"aadbf27c-8efb-e511-80d2-00155db07c77","fullname":"Paul Cannon (sample)"
            }
          },{
            "@odata.etag":"W/\"513491\"","name":"A. Datum Corporation (sample)","accountid":"46dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"acdbf27c-8efb-e511-80d2-00155db07c77","fullname":"Rene Valdes (sample)"
            }
          },{
            "@odata.etag":"W/\"513493\"","name":"Coho Winery (sample)","accountid":"48dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "contactid":"aedbf27c-8efb-e511-80d2-00155db07c77","fullname":"Jim Glynn (sample)"
            }
          }
        ]
      }
      

    如果不要傳回實體集的相關實體,您也可以傳回相關實體的參考 (連結),藉由 $ref 選項展開單一值導覽屬性。 下列範例會傳回所有客戶的連絡人記錄連結。

    • 要求

      GET cc_WebAPI_ServiceURI/accounts?$select=name&$expand=primarycontactid/$ref HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • 回覆

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid)","value":[
          {
            "@odata.etag":"W/\"513475\"","name":"Fourth Coffee (sample)","_primarycontactid_value":"9cdbf27c-8efb-e511-80d2-00155db07c77","accountid":"36dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(9cdbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513477\"","name":"Litware, Inc. (sample)","_primarycontactid_value":"9edbf27c-8efb-e511-80d2-00155db07c77","accountid":"38dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(9edbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513479\"","name":"Adventure Works (sample)","_primarycontactid_value":"a0dbf27c-8efb-e511-80d2-00155db07c77","accountid":"3adbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(a0dbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513481\"","name":"Fabrikam, Inc. (sample)","_primarycontactid_value":"a2dbf27c-8efb-e511-80d2-00155db07c77","accountid":"3cdbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(a2dbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"514057\"","name":"Blue Yonder Airlines (sample)","_primarycontactid_value":"a0dbf27c-8efb-e511-80d2-00155db07c77","accountid":"3edbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(a0dbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513485\"","name":"City Power & Light (sample)","_primarycontactid_value":"a6dbf27c-8efb-e511-80d2-00155db07c77","accountid":"40dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(a6dbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513487\"","name":"Contoso Pharmaceuticals (sample)","_primarycontactid_value":"a8dbf27c-8efb-e511-80d2-00155db07c77","accountid":"42dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(a8dbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513489\"","name":"Alpine Ski House (sample)","_primarycontactid_value":"aadbf27c-8efb-e511-80d2-00155db07c77","accountid":"44dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(aadbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513491\"","name":"A. Datum Corporation (sample)","_primarycontactid_value":"acdbf27c-8efb-e511-80d2-00155db07c77","accountid":"46dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(acdbf27c-8efb-e511-80d2-00155db07c77)"
            }
          },{
            "@odata.etag":"W/\"513493\"","name":"Coho Winery (sample)","_primarycontactid_value":"aedbf27c-8efb-e511-80d2-00155db07c77","accountid":"48dbf27c-8efb-e511-80d2-00155db07c77","primarycontactid":{
              "@odata.id":"cc_WebAPI_ServiceURI/contacts(aedbf27c-8efb-e511-80d2-00155db07c77)"
            }
          }
        ]
      }
      
    • 藉由展開集合值導覽屬性擷取相關實體:如果您展開集合值導覽參數來擷取實體集的相關實體,將會傳回相關實體的 @odata.nextLink 屬性。 您應使用 @odata.nextLink 屬性的值與新的 GET 要求傳回需要的資料。

      下列範例會擷取指派至前 5 項客戶記錄的工作。

      • 要求

        GET cc_WebAPI_ServiceURI/accounts?$top=5&$select=name&$expand=Account_Tasks($select%20=%20subject,%20scheduledstart) HTTP/1.1
        Accept: application/json
        OData-MaxVersion: 4.0
        OData-Version: 4.0
        
      • 回覆

        HTTP/1.1 200 OK
        Content-Type: application/json; odata.metadata=minimal
        OData-Version: 4.0
        
        {
          "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,Account_Tasks,Account_Tasks(subject,scheduledstart))","value":[
            {
              "@odata.etag":"W/\"513475\"","name":"Fourth Coffee (sample)","accountid":"36dbf27c-8efb-e511-80d2-00155db07c77","Account_Tasks":[
        
              ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(36dbf27c-8efb-e511-80d2-00155db07c77)/Account_Tasks?$select%20=%20subject,%20scheduledstart"
            },{
              "@odata.etag":"W/\"513477\"","name":"Litware, Inc. (sample)","accountid":"38dbf27c-8efb-e511-80d2-00155db07c77","Account_Tasks":[
        
              ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(38dbf27c-8efb-e511-80d2-00155db07c77)/Account_Tasks?$select%20=%20subject,%20scheduledstart"
            },{
              "@odata.etag":"W/\"514074\"","name":"Adventure Works (sample)","accountid":"3adbf27c-8efb-e511-80d2-00155db07c77","Account_Tasks":[
        
              ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(3adbf27c-8efb-e511-80d2-00155db07c77)/Account_Tasks?$select%20=%20subject,%20scheduledstart"
            },{
              "@odata.etag":"W/\"513481\"","name":"Fabrikam, Inc. (sample)","accountid":"3cdbf27c-8efb-e511-80d2-00155db07c77","Account_Tasks":[
        
              ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(3cdbf27c-8efb-e511-80d2-00155db07c77)/Account_Tasks?$select%20=%20subject,%20scheduledstart"
            },{
              "@odata.etag":"W/\"514057\"","name":"Blue Yonder Airlines (sample)","accountid":"3edbf27c-8efb-e511-80d2-00155db07c77","Account_Tasks":[
        
              ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(3edbf27c-8efb-e511-80d2-00155db07c77)/Account_Tasks?$select%20=%20subject,%20scheduledstart"
            }
          ]
        }
        
  • 藉由展開單一值和集合值導覽屬性擷取相關實體:下列範例示範如何使用單一值和集合值導覽屬性展開實體集的相關實體。 如先前所述,展開集合值導覽屬性來擷取實體集的相關實體,會傳回相關實體的 @odata.nextLink 屬性。 您應使用 @odata.nextLink 屬性的值與新的 GET 要求傳回需要的資料。

    在此範例中,我們將擷取指派至前 3 個客戶的連絡人和工作。

    • 要求

      GET cc_WebAPI_ServiceURI/accounts?$top=3&$select=name&$expand=primarycontactid($select=contactid,fullname),Account_Tasks($select=subject,scheduledstart)  HTTP/1.1
      Accept: application/json
      OData-MaxVersion: 4.0
      OData-Version: 4.0
      
    • 回覆

      HTTP/1.1 200 OK
      Content-Type: application/json; odata.metadata=minimal
      OData-Version: 4.0
      
      {
        "@odata.context":"cc_WebAPI_ServiceURI/$metadata#accounts(name,primarycontactid,Account_Tasks,primarycontactid(contactid,fullname),Account_Tasks(subject,scheduledstart))","value":[
          {
            "@odata.etag":"W/\"550614\"",
                "name":"Fourth Coffee (sample)",
                "accountid":"5b9648c3-68f7-e511-80d3-00155db53318",
                "primarycontactid":{
                    "contactid":"c19648c3-68f7-e511-80d3-00155db53318",
                    "fullname":"Yvonne McKay (sample)"
            },
            "Account_Tasks":[
      
             ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(5b9648c3-68f7-e511-80d3-00155db53318)/Account_Tasks?$select=subject,scheduledstart"
          },{
            "@odata.etag":"W/\"550615\"",
                "name":"Litware, Inc. (sample)",
                "accountid":"5d9648c3-68f7-e511-80d3-00155db53318",
                "primarycontactid":{
                    "contactid":"c39648c3-68f7-e511-80d3-00155db53318",
                    "fullname":"Susanna Stubberod (sample)"
            },"Account_Tasks":[
      
            ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(5d9648c3-68f7-e511-80d3-00155db53318)/Account_Tasks?$select=subject,scheduledstart"
          },{
            "@odata.etag":"W/\"550616\"",
            "name":"Adventure Works (sample)",
            "accountid":"5f9648c3-68f7-e511-80d3-00155db53318",
            "primarycontactid":{
              "contactid":"c59648c3-68f7-e511-80d3-00155db53318",
              "fullname":"Nancy Anderson (sample)"
            },"Account_Tasks":[
      
            ],"Account_Tasks@odata.nextLink":"cc_WebAPI_ServiceURI/accounts(5f9648c3-68f7-e511-80d3-00155db53318)/Account_Tasks?$select=subject,scheduledstart"
          }
        ]
      }
      

另請參閱

Web API 查詢資料範例 (C#)
Web API 查詢資料範例 (用戶端 JavaScript)
使用 Web API 執行作業
撰寫 HTTP 要求並處理錯誤
使用 Web API,建立實體
使用 Web API 擷取實體
使用 Web API 更新和刪除實體
使用 Web API 建立和取消實體的關聯
使用 Web API 功能
使用 Web API 動作
使用 Web API,執行批次作業
使用 Web API 模擬其他使用者
使用 Web API 執行條件運算

Microsoft Dynamics 365

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權