在Acumatica REST API端点中扩展多个字段

时间:2019-02-06 18:26:10

标签: rest api odata acumatica endpoint

如何扩展Acumatica REST API调用中的多个字段?

/entity/Default/17.200.001/Customer?$expand=Contacts

有效,并且

/entity/Default/17.200.001/Customer?$expand=Salespersons

可以,但是

/entity/Default/17.200.001/Customer?$expand=Contacts,Salespersons

没有,两个都没有扩展。

根据Acumatica文档:

集成->使用基于合同的REST API->用于检索记录的参数-> $ expand

他们说他们遵循OData约定(https://www.odata.org/documentation/odata-version-3-0/url-conventions/

我相信此请求会得到遵守。

2 个答案:

答案 0 :(得分:1)

我已经问过一位同事这种行为。假设是使用OData语法扩展多个查询有效,但不能扩展多个实体数组。我说一个假设是因为尝试扩展2个实体数组时返回的Web服务错误过于笼统,无法将其确定为问题。

当前发布的文档似乎没有涉及该限制,但是应该随更新的Web服务文档一起发布。请注意,这仅适用于获取所有实体。如果要选择一个实体(例如:按ID选择1个客户),则可以扩展1个以上的数组。对单个实体的限制较少,因为对1个实体与X个实体的性能优化的需求较少。

您可以扩展多个单个实体和一个数组:

$expand=Contacts,MainContact,BillingContact

但是不能扩展多个数组:

$expand=Contacts,Salespersons

在Web服务端点屏幕的左窗格树视图中,数组实体具有数组符号[](在下图中以红色突出显示),而单个实体则没有[]: enter image description here

答案 1 :(得分:1)

可能的解决方法:

1)如果需要所有客户和所有字段的扩展列表

a) Write a Generic Inquiry
b) Make multiple calls, expanding only one list each time

2)如果客户数量很少

a) Use the /Customer/{id}?$expand=... for each customers {id}

(2a)的好处是支持BQL委托,因为(1b)可能会出现“查看答案具有BQL委托”错误。 (1a)可能需要最多的工作。