web-services - 使用 Microsoft Dynamics NAV 2016 中的 Odata Web 服务获取特定集合或实体的 $metadata

标签 web-services odata metadata microsoft-dynamics dynamics-nav

环境

作为集成项目的一部分,我需要一个 PHP 网站,以便能够读取和写入 Microsoft Dynamics NAV 2016 的 Odata 服务。

Microsoft Dynamics NAV 2016 使用 the Odata v3 standard .

上下文

现在,让我们带上我的 customer服务为例。

获取实体集合

获取我的收藏概览 customer实体工作正常,使用以下格式的链接:

https://<Server>:<WebServicePort>/<ServerInstance>/OData/Company(\'<CompanyName>\')/customer

获取单个实体

取单 customer实体基于 ​​id工作正常,使用以下格式的链接:
https://<Server>:<WebServicePort>/<ServerInstance>/OData/Company(\'<CompanyName>\')/customer(\'<Id>\')

获取全局元数据

概览 $metadata对于我的所有服务,使用以下格式的链接都可以正常工作(尽管它缺少 Json 支持):
https://<Server>:<WebServicePort>/<ServerInstance>/OData/$metadata

获取特定于集合的元数据

现在,基于 the Odata v3 specs以及 odata.metadata 的值我的客户概览服务的属性,我希望能够获得 $metadata 的概览。的customer实体,使用以下格式的链接:
https://<Server>:<WebServicePort>/<ServerInstance>/OData/$metadata#customer

这不会按预期工作。见小节The issue以下。

获取特定于实体的元数据

同样,基于 the Odata v3 specs以及 odata.metadata 的值检索单个客户时我的数据集的属性,我希望能够获得 $metadata 的概述customer 的单个字段的实体,使用具有以下格式的链接:
https://<Server>:<WebServicePort>/<ServerInstance>/OData/$metadata#customer/@<FieldName>

这不会按预期工作。见小节The issue以下。

问题

出于某种原因,以下所有内容$metadata似乎被忽略了。这意味着最后三个 URL 给了我完全相同的输出,这不是我所期望的。

实际问题
  • 是否可以只获取一个集合或实体的元数据,就像我在小节 Fetching collection-specific metadata 中尝试的那样和 Fetching entity-specific metadata我的 The context以上部分?
  • 如果是,我在这里做错了什么?我错过了什么?
  • 最佳答案

    @xuzhg在评论中提出建议,正如 Support Metadata as a service (#181) 等 Github 问题所指出的那样,看来 Odata $metadata并不是真正的动态服务。相反,它只是一个 XML 文件。

    这不仅解释了为什么在格式 https://<Server>:<WebServicePort>/<ServerInstance>/OData/$metadata#... 的链接中 $metadata 之后的任何内容都被忽略了。 ,以及为什么它只支持 XML,而不支持 Json(与实际的 Odata 服务不同)。

    关于web-services - 使用 Microsoft Dynamics NAV 2016 中的 Odata Web 服务获取特定集合或实体的 $metadata,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35543769/

    相关文章:

    ios - 快速将 GPS 元数据字典添加到使用 AVFoundation 拍摄的图像

    c# - 在 Azure 中添加、编辑元数据

    sql-server - 列系统表(sys.columns、sys.all_columns 等)如何 self 描述?

    java - cxf 端点的 Spring 基本身份验证?

    java - Spring: WebServiceTransportException: Not Found [404] 对于非常简单的 WS 客户端

    android - 将 wsdl 1.2 与 ksoap2-android 一起使用

    search - Azure 搜索分层搜索字段

    odata - 带有过滤器的 SAPUI5 自动绑定(bind)智能表

    c# - 是否有用于序列化自定义对象的 ODataSerializer?

    java - Restful : how to dynamically extend an API path's (or available resources)?