acumatica - 无需 API 调用即可导出 Acumatica 数据
问题描述
我想将 Acumatica 实例中的库存商品作为数据合约导出,但不调用 API。我不想调用 API,因为我需要从实例内部而不是实例外部检索它。我认为我真正需要的只是一种调用基于合同的代码以序列化为 JSON 的方法,但不使用 URL。我想我可以在同一个实例中调用 API,但它似乎应该比这更容易。
解决方案
严格来说,您想要进行 API 调用。特别是使用“基于合同的 API”而不使用“Web 服务 API”。这似乎违背了基于契约的 API 的设计目标。
考虑以下陈述: 基于契约的 API 建立在 Web 服务 API 提供的对象模型之上。 资料来源: https ://adn.acumatica.com/blog/yes-we-have-an-api-for-that-an-introduction-to-the-acumatica-cloud-erp-apis/
Web 服务 API 提供了基于契约的 API 的对象模型。移除等式的 Web 服务 API,基于契约的 API 缺少对象序列化所依赖的对象模型。实际上,这意味着处理基于契约的序列化的方法将需要 Web 服务对象模型作为输入参数。
我相信在不使用 TCP-IP 堆栈的情况下会存在一些阻止 Web 服务对象模型实例化的技术障碍。这主要是因为基于契约的 API 最初的设计目标是通过 Web 服务调用。
这归结为 Acumatica 对不同的上下文使用不同的对象模型。基于合同的使用“实体”模型,而定制使用“DAC”模型。查询 API 也有很大的不同。定制使用 BQL 和基于合同的其他方法。
拥有统一的对象模型有明显的优势。学习只使用一种比必须学习两种更容易。仅使用 JSON 比混合和转换 XML 和 JSON 更容易。然而,每个模型也有其缺点。拥有不同的模型允许使用更适合手头任务的模型。对象模型的常见要求是性能、人类可读性、内存占用、易于机器解析的能力等。
也就是说,如果您只需要基于合约的 API 的对象模型而没有查询接口,您可以通过使用 BQL 并将 DAC 对象序列化为 JSON 来近似它。因为几乎所有 DAC 对象都具有 C# Serializable 属性,所以序列化使用 BQL 检索到的 DAC 对象应该比使用数据协定 API 检索和序列化记录更容易,而无需通过 TCP-IP 堆栈。它也将与 API 的设计目标朝着相同的方向发展,即基于合同的 API 应该用于通过 Web 服务进行访问。
推荐阅读
- android - 通过 Android JNI 上的 Appsrc Gstreamer 接收视频数据缓冲区
- flutter - 如何:创建不是 GridView 而是在 CustomScrollView 内滚动的动态图像网格?(颤振网络)
- powershell - 使用 rest-api 导入 pbix 文件时出现 MultiPartMimeStreamFormatException 错误
- django - 如何使用中间表在模板中显示 m2m 关系?
- scale - Tradingview的自动调整比例功能:排除指标的图纸
- laravel - 通过 ibmcloud 推送 Web 应用程序的正确命令应该是什么?
- dataframe - 如何在火花中并行处理/运行列表项?
- kubernetes - Kubenetes 集群:所有 pod,磁盘部署下降
- c# - 为什么这段代码不起作用?跑步后什么都没有?我想在我看来有验证错误
- c# - 如何通过 C# 在 Excel 中查找列排序和顺序类型?