rest - 根据端点和屏幕名称(客户和销售订单)确定 REST API 的正确 JSON 字段 - Acumatica
问题描述
我的项目是导入客户和销售订单。我从外部程序中获取一个 CSV 文件,并将它们逐个字段地导入到销售订单和客户中。
我的挑战是确定正确的字段名称以使 REST API 正常工作。
我有以下字段:
我希望包括三个字段:描述、礼品信息和公众评论。我检查了这个元素,这没有给我任何有用的信息。(即没有一个值映射到我将在 JSON 中使用的字段名称。)
当我转到客户端点时,描述已经存在:
因此,此 JSON 记录在 ADD 或 UPDATE 中成功:
{
"OrderNbr" : {"value": "SO003525"},
"Description" : {"value": "This is the Description"},
}
我扩展了默认客户(版本 18.200.001),并找到并添加了“礼品说明”和“公众评论”——它们被列为“订单摘要”的一部分——这正是说明所在的位置。
但是,此 JSON 数据确实向 Gift 或 Public 添加了任何内容:
{
"OrderNbr" : {"value": "SO003525"},
"Description" : {"value": "This is the Description"},
"PublicComment" : {"value": "This is the Public Comment"},
"GiftMessage": { "value": "This is the Gift Message"},
}
在与设置屏幕的(内部)开发人员交谈时,他告诉我添加了“礼物消息”和“公共评论”字段。但它们没有在端点中显示为“用户定义”字段。
问题:
1) 我怎么知道 JSON 结构应该是什么样子?是否有某种映射文档或显示 JSON 到端点数据的打印输出?我的意思是有时我需要使用子对象来引用 JSON 中的数据,例如,如果我想更新“主要联系人”信息,我会这样做:
{
"CustomerClass":{"value":"INDIVIDUAL"},
"CustomerID":{"value":"78577"},
"CustomerName":{"value":"TEST CUSTOMER "},
"MainContact":
{
"CompanyName":{"value":"TEST CUSTOMER COMPANY"},
"DisplayName":{"value": "TEST CUSTOMER DISPLAY"},
}
}
我怎么知道这样做?(我知道只是因为我在添加记录时返回的数据中看到了它......这带来了第二个问题:
2) 有没有办法以 JSON 格式检索整个数据记录。有点像:“GET - SELECT ALL - EXPAND ALL”,所以我可以以正确设置的 JSON 格式查看记录中的所有数据?
3) 知道为什么礼物消息和公众评论显示为“订单摘要”但没有像描述那样更新吗?
4) 为什么有些东西是“不可扩展的”?例如,我无法展开销售订单中的付款。我收到一个错误:
解决方案
1) 我怎么知道 JSON 结构应该是什么样子
最简单的方法是执行 GET 请求。字段名称等同于DisplayName
去掉空格的属性。因此,如果在屏幕上字段被标记Order Type
,字段名称将OrderType
在请求中。
要发出 GET 请求,URL 格式为/Entity/Keys
.
例如实体SalesOrder
有两个键:OrderType
和OrderNbr
。
要获取实体SalesOrder
类型SO
和编号SO005051
,URL 将以: 结尾/SalesOrder/SO/SO005051
。
2) 有没有办法以 JSON 格式检索整个数据记录。有点像:“GET - SELECT ALL - EXPAND ALL”,所以我可以以正确设置的 JSON 格式查看记录中的所有数据?
如果您想要所有详细信息,则需要在 GET 查询的扩展子句中指定它们:$expand=Contacts,MainContact,BillingContact
可以在 Web Service Endpoint 屏幕 SM207060 中查找详细信息数组的名称。它们是具有空数组[]
后缀的树视图元素。
3) 知道为什么礼物消息和公众评论显示为“订单摘要”但没有像描述那样更新吗?
这些是自定义字段。您需要扩展端点以添加这些自定义字段,否则它们将被忽略。如果自定义端点没有问题,则该字段可能未绑定到数据库。
但它们没有在端点中显示为“用户定义”字段。
如果User Defined
您的意思是这些字段是通过向导(没有编程)添加的,那么这可能是它们在 Web 服务中不起作用的原因。您需要添加带有 DAC 扩展的自定义字段,这需要编程而不是用户定义字段。
推荐阅读
- azure - Azure 室内地图显示单位替代名称 (nameAlt)
- c - 计算c中输入字符串中单词的出现次数
- ruby-on-rails - Rails 路由:将自定义路由添加到标准操作列表
- flutter - 在 Flutter 中,如何将文件上传到 PubNub 频道?
- ios - 如何在 Swift 中用人类可读的日期替换字符串中的日期?
- python - 在 Raspi3 上安装 av lib 失败
- python - 使用 BeautifulSoup 从谷歌浏览器中提取书签和文件夹层次结构
- python - 我如何过滤从状态/过滤流 API 收到的推文
- jenkins - 如何在所有或部分服务器上运行詹金斯管道
- user-interface - 如何在 Racket 中设置框架的背景?