仅获取 OData 中实体的属性定义

Rah*_*til 3 dynamics-crm odata

我正在开发一个需要与 OData 服务(确切地说是 Microsoft Dynamics CRM)通信的应用程序。我有一个要求,我只需要知道实体具有哪些所有属性。

例如

[Organization URI]/api/data/v8.1/contacts
Run Code Online (Sandbox Code Playgroud)

返回所有联系人,但我只想要联系人的属性定义。

现在[Organization URI]/api/data/v8.1/contacts返回带有值的 JSON,但是我正在寻找的是联系人实体的模式。它应该返回我它拥有的所有属性(例如firstnamelastname)以及可能的属性类型。

我尝试使用$metadata但没有任何运气。是否可以仅获取有关实体的信息?

任何帮助,将不胜感激。

Joh*_*ven 5

请参阅使用 Web API 查询元数据。前面的答案很接近,但您需要$expand=Attributes获取属性列表。另外,它还可以获取您想要在联系人上过滤的所有实体。

GET [Organization URI]/api/data/v8.1/EntityDefinitions?$select=LogicalName&**$expand=Attributes($select=LogicalName)**&$filter=SchemaName eq 'Contact'
Run Code Online (Sandbox Code Playgroud)

在返回的 JSON 中,您将找到以下属性

value[0].Attributes
Run Code Online (Sandbox Code Playgroud)

这是一个数组。在本例中,$select=LogicalName每个属性都具有 LogicalName 属性(以及 MetadataId,它是该属性的 GUID)。

所以第一个$select是实体的属性。告诉$expandCRM 添加属性。内部$select告诉属性要返回哪些字段。确保$filter他们只返回联系人的所有这些元数据。