因此,我对 Dynamics 365 API 感到非常困惑。
我已经设法使用 OUATH2 对我们的实例进行身份验证,并且已经使用以下方法来获取诸如公司列表之类的东西:
https://api.businesscentral.dynamics.com/v2.0/Production/api/v2.0/companies
然而,当我尝试访问其他元素时,服务器返回的神秘错误似乎没有尽头,为了弄清楚事情需要爬过的兔子洞似乎没有尽头. 更具体地说,上面显示的表单的端点似乎无法通过动态“Web 服务”配置页面获得,该页面仅显示 Odata4、Odata 和 SOAP URL。
所以这里有一些问题:
1 - 是否有一种标准方法可以将 OData4 端点映射到(在我看来)一个更“标准”的端点。对于上面显示的示例,OData4 端点采用以下形式:
`https://api.businesscentral.dynamics.com/v2.0/<TENANT_ID>/Sandbox/ODataV4/Company`
它返回数据很好。通过 OData4 端点通过 Web 服务提供给 API 的所有元素是否也可以通过“标准”端点提供?
2 - 如何确定特定端点所需的密钥是什么?我现在的症结是我可以使用 OData4 端点找到采购订单,但我无法找到采购订单行项目。获得采购订单列表后,我尝试通过端点查找行项目列表:
https://api.businesscentral.dynamics.com/v2.0/<TENAND ID>/Production/ODataV4/Company('COMPANY_ID')/PurchaseOrderLine
但是当我尝试传递“否”时,返回的错误是“查询语法错误”(好的,我会接受)。PurchaseOrder 的值作为参数,或者“未设置 API 所需的数据。要设置数据,请从 API 设置页面调用操作”,当我使用复数端点时。那么,什么是公约?这些 Odata4 端点什么时候是复数,什么时候是单数?我如何找出获取该项目所需的键是什么、有多少以及它们的顺序?
3 - 我需要暴露其他东西吗?即使元素看起来已经暴露了,我该如何做这些事情?我见过错误,例如:
尝试读取属性“PurchaseOrderPurchLines”的内容时,从 JSON 读取器读取了“StartObject”类型的节点;但是,应该有一个“StartArray”节点
或者,
未设置 APi 所需的数据。要设置数据,请从 API 设置页面调用操作。
或者,
“NAV.PurchaseOrder”类型上不存在“PurchaseOrderLines”属性。确保仅使用类型定义的属性名称
最后一个很有趣,因为我正在尝试发布 PurchaseOrder 并且还在有效负载中包含嵌套的 Line Items。(tf) 在这里给出了什么?
4 - 访问事物的最佳方法是什么?是否最好使用“标准”端点,或者我应该与 OData4 端点作战,尽管在 Web 服务配置中指出,但似乎反应不佳。
5 - 为什么这东西如此神秘?是我一个人,还是故意让这件事变得迟钝?所谓的“文档”绝对是打击。