使用GET请求检索作为资源的具唯一标识符的记录的数据。 检索表行(实体记录)时,还可以请求特定属性并展开导航属性以从不同表中的相关记录返回属性。
注释
有关检索表定义的信息,请参阅 使用 Web API 的查询表定义。
基本检索
以下示例返回主键值等于 00000000-0000-0000-0000-00000-000000000001 的帐户实体记录的数据:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)
此示例返回帐户记录的所有属性,这不是性能最佳做法。 始终使用 $select 系统查询选项来限制检索数据时返回的属性。 在检索多行数据时,这种做法尤其重要。 有关详细信息,请参阅 使用 Web API 的查询数据。
检索特定属性
若要限制使用 GET 请求检索数据时返回的属性,请使用 $select 具有逗号分隔的属性名称列表的系统查询选项。 仅请求所需的属性以提高性能。 如果未指定要返回的属性,请求将返回所有属性。
以下示例检索账户实体中主键值等于00000000-0000-0000-0000-000000000001的name和revenue属性:
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)?$select=name,revenue HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
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": "[Organization URI]/api/data/v9.2/$metadata#accounts(name,revenue)/$entity",
"@odata.etag": "W/\"502186\"",
"name": "A. Datum Corporation (sample)",
"revenue": 10000,
"accountid": "00000000-0000-0000-0000-000000000001",
"_transactioncurrencyid_value":"b2a6b689-9a39-e611-80d2-00155db44581"
}
请求某些类型的属性时,会看到自动返回的更多只读属性。
如果请求一个金额值,则_transactioncurrencyid_value查找属性 会被返回。 此属性仅包含事务货币的 GUID 值,因此可以使用它通过 事务货币 EntityType 检索有关货币的信息。 或者,可以通过请求批注来获取同一请求中的更多数据。
如果请求属于地址复合属性的某个属性,您也会获取该复合属性。 例如,如果查询请求 address1_line1 联系人的属性,也会返回该 address1_composite 属性。
使用备用键检索记录
如果实体定义了备用密钥,则可以使用它而不是唯一标识符来检索、更新或删除实体。 默认情况下,没有为实体配置备用密钥。 仅当组织或解决方案添加备用密钥时,备用密钥才可用。
当前不支持具有以下字符/的备用键值、<、>*%&:、\\、。?+
例如,如果 Contact 实体具有同时包含 firstname 属性 emailaddress1 的备用键定义,则可以使用查询检索联系人,其中包含为这些键提供的数据:
GET [Organization URI]/api/data/v9.2/contacts(firstname='Joe',emailaddress1='abc@example.com')
如果备用键定义包含查找类型字段(例如 primarycontactid 实体的 account 属性),则可以使用 Lookup 属性 检索 account,如以下示例所示:
GET [Organization URI]/api/data/v9.2/accounts(_primarycontactid_value=00000000-0000-0000-0000-000000000001)
检索存储分区中的记录
检索存储在分区 中的弹性表中的记录 时,请务必指定分区键。
检索单个属性值
如果只需要检索单个属性的值,请将属性的名称追加到实体 URI。 减少返回的数据量是一种性能最佳做法。
以下示例仅返回account 实体的name 属性的值:
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name 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":"[Organization URI]/api/data/v9.2/$metadata#accounts(00000000-0000-0000-0000-000000000001)/name",
"value":"Adventure Works (sample)"
}
检索属性的原始值
若要检索基元属性(而不是 JSON)的原始值,请追加 /$value 到 URL。 例如:
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/name/$value 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
Adventure Works (sample)
除非使用文件或图像数据,否则使用原始值并不常见。 有关详细信息,请参阅 使用 Web API 在单个请求中下载文件。
检索导航属性值
可以通过将导航属性的名称追加到单个实体的 URI 来访问导航属性的值或查找字段。
以下示例通过使用primarycontactid的单值导航属性,返回account的主要contactfullname。
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=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": "[Organization URI]/api/data/v9.2/$metadata#contacts(fullname)/$entity",
"@odata.etag": "W/\"500128\"",
"fullname": "Rene Valdes (sample)",
"contactid": "ff390c24-9c72-e511-80d4-00155d2a68d1"
}
对于集合值导航属性,可以请求仅返回对相关实体的引用或仅返回相关实体的计数。
以下示例通过在请求中添加 /$ref 来返回与特定帐户相关的任务的引用。
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/AccountTasks/$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": "[Organization URI]/api/data/v9.2/$metadata#Collection($ref)",
"value":
[
{ "@odata.id": "[Organization URI]/api/data/v9.2/tasks(6b5941dd-d175-e511-80d4-00155d2a68d1)" },
{ "@odata.id": "[Organization URI]/api/data/v9.2/tasks(fcbb60ed-d175-e511-80d4-00155d2a68d1)" }
]
}
以下示例通过使用集合值导航属性 Account_Tasks,并附加 /$count 来返回与特定帐户相关的任务数量。
请求:
GET [Organization URI]/api/data/v9.2/accounts(00000000-0000-0000-0000-000000000001)/Account_Tasks/$count HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
响应:
2
注释
返回的值包括 UTF-8 字节顺序标记(BOM)字符(),指示此值是 UTF-8 文档。
通过展开导航属性来检索相关记录
使用$expand系统查询选项来控制返回的相关实体的数据。 有关详细信息,请参阅 联接表。
检测记录自检索以来是否已更改
作为性能最佳做法,请仅请求所需的数据。 如果之前检索了实体记录,请使用与该记录关联的 ETag 来执行条件检索。 有关详细信息,请参阅 条件检索。
检索格式化值
请求单个记录检索格式化值的方式应与查询实体集的方式相同。