我正在尝试通过 Web 服务将包含多个记录的 json 插入 Business Central
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';
layout
{
area(content)
{
repeater(Group)
{
field("BatchID"; Rec."Batch ID")
{
ApplicationArea = All;
}
}
}
}
}
如果我发出 GET 请求,我会看到以下响应:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v2.0/{{TENANT_ID}}/{{ENVIRONMENT}}/api/Kuhicop/Kuhicop/v1.0/$metadata#companies({{COMPANY_ID}})/SalesOrderInserts",
"value": [
{
"@odata.etag": "W/\"JzIwOzE1ODc4NzU5MDIzMDQyNDQyNTI1MTswMDsn\"",
"BatchID": "BATCH001"
},
{
"@odata.etag": "W/\"JzE5OzI3MTk3MjU4MTE5MDAwNDI1NTAxOzAwOyc=\"",
"BatchID": "BATCH002"
},
{
"@odata.etag": "W/\"JzE5OzgwMDc0MzY2NzQ0NjcxOTQxOTExOzAwOyc=\"",
"BatchID": "BATCH003"
}
]
}
尝试从 Postman 插入以下网址:https://api.businesscentral.dynamics.com/v2.0/{{TENANT_ID}}/{{ENVIRONMENT}}/api/Kuhicop/Kuhicop/v1.0/companies ({{COMPANY_ID}})/销售订单插入
基于 GET 响应,我将发送一个包含以下数据的 json:
{
"value": [
{
"BatchID": "BATCH004"
},
{
"BatchID": "BATCH005"
}
]
}
但我收到此错误:
{
"error": {
"code": "BadRequest",
"message": "The property 'value' does not exist on type 'Microsoft.NAV.salesOrderInsert'. Make sure to only use property names that are defined by the type. CorrelationId: a10912cb-7f47-4f38-b0a0-43f5dd595e3a."
}
}
如何在 Business Central 自定义 API 中插入多行?
那不会像你想象的那样起作用。要一次性插入多行,您需要使用$batch。我试过一次,有效,确实很麻烦。我认为逐行插入更容易。因此,如果您真的不需要在事务中插入一堆行,那么就不要使用它。
示例
https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/$batch
User-Agent: Fiddler
Authorization: <authz token>
Content-Type: application/json
Accept: application/json
Host: localhost:9000
Content-Length: 1234
{
"requests": [
{
"id": "1",
"method": "PATCH",
"atomicityGroup": "06d8a02a-854a-4a21-8e5c-f737bbd2dea8",
"url": "https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/Me",
"headers": {
"content-type": "application/json; odata.metadata=minimal; odata.streaming=true",
"odata-version": "4.0"
},
"body": {"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Person","[email protected]":"#Collection(Microsoft.OData.SampleService.Models.TripPin.Location)","AddressInfo":[{"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Location","Address":"P.O. Box 555","City":{"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.City","CountryRegion":"United States","Name":"Lander","Region":"WY"}}],"Concurrency":635657333837618321,"[email protected]":"#Collection(String)","Emails":["[email protected]","[email protected]"],"FirstName":"April","[email protected]":"#Microsoft.OData.SampleService.Models.TripPin.PersonGender","Gender":"Female","LastName":"Test","UserName":"aprilcline"}
},
{
"id": "2",
"method": "PATCH",
"atomicityGroup": "06d8a02a-854a-4a21-8e5c-f737bbd2dea8",
"url": "https://services.odata.org/V4/(S(uvf1y321yx031rnxmcbqmlxw))/TripPinServiceRW/Me/Trips(1001)",
"headers": {
"content-type": "application/json; odata.metadata=minimal; odata.streaming=true",
"odata-version": "4.0"
},
"body": {"@odata.type":"#Microsoft.OData.SampleService.Models.TripPin.Trip","Budget":3000,"Description":"Updated Trip","EndsAt":"2014-01-04T00:00:00Z","Name":"Trip in US","ShareId":"9d9b2fa0-efbf-490e-a5e3-bac8f7d47354","StartsAt":"2014-01-01T00:00:00Z","[email protected]":"#Collection(String)","Tags":["Trip in New York","business","sightseeing"],"TripId":1001}
}
]
}