如何在Business Central自定义API中批量插入多行数据?
Business Central自定义API批量插入多行记录解决方案
问题原因
你当前的API页面默认不支持直接提交value包裹的数组格式,BC的API集合端点默认仅接受单个实体POST,或通过OData标准的批量请求方式处理多行插入。
方案1:使用OData $batch请求(官方推荐)
这是BC全版本支持的批量操作方式,步骤如下:
- 请求URL:替换为批量端点
https://api.businesscentral.dynamics.com/v2.0/{{TENANT_ID}}/{{ENVIRONMENT}}/api/Kuhicop/Kuhicop/v1.0/$batch - 请求头:设置多部分内容类型,边界符自定义(如
batch_abc123)Content-Type: multipart/mixed; boundary=batch_abc123 - 请求体:每个插入操作作为独立POST请求,用边界符分隔,示例:
注意:边界符首尾要一致,最后以--batch_abc123 Content-Type: application/http Content-Transfer-Encoding: binary POST companies({{COMPANY_ID}})/SalesOrderInserts HTTP/1.1 Content-Type: application/json {"BatchID": "BATCH004"} --batch_abc123 Content-Type: application/http Content-Transfer-Encoding: binary POST companies({{COMPANY_ID}})/SalesOrderInserts HTTP/1.1 Content-Type: application/json {"BatchID": "BATCH005"} --batch_abc123----边界符--结束。
方案2:修改API页面支持直接提交数组(BC 20+版本适用)
如果你的BC版本在20及以上,可修改API页面启用集合操作:
- 更新API页面代码,添加
AllowBatchOperations = true;属性:page 60000 "Sales Order Inserts MIM API" { PageType = API; SourceTable = "Sales Order Inserts MIM"; Caption = 'Sales Order Inserts MIM API'; EntitySetName = 'SalesOrderInserts'; EntityName = 'SalesOrderInsert'; APIPublisher = 'Kuhicop'; APIGroup = 'Kuhicop'; DelayedInsert = true; APIVersion = 'v1.0'; AllowBatchOperations = true; // 添加这一行 layout { area(content) { repeater(Group) { field("BatchID"; Rec."Batch ID") { ApplicationArea = All; } } } } } - 提交请求时,直接发送JSON数组(无需
value包裹):[ { "BatchID": "BATCH004" }, { "BatchID": "BATCH005" } ] - 请求头保持
Content-Type: application/json,URL使用原集合地址即可。
内容的提问来源于stack exchange,提问作者kuhi
相关产品推荐
相关产品推荐

