业务中心:custome api getById 不起作用
Business Central: custome api getById does not work
我的问题是我无法为特定 itemId
调用我的自定义 API,但是当我调用普通 API 时,它会按预期工作。
目前我可以像这样成功调用特定项目的正常 API:
myBcServer:Port/bc/api/v1.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)
但是当我尝试用我的习惯做同样的事情时 API:
myBcServer:Port/bc/api/contoso/app1/v2.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)
我得到一个错误:
"error": {
"code": "BadRequest_NotFound",
"message": "Bad Request - Error in query syntax. CorrelationId: f7bc0b59-45ac-4293-9f94-108d6436272c."
}
我可以在 /items
成功调用两个 API 版本。我在哪里获得所有项目的列表。
我制作的自定义 API 页面如下所示:
page 50101 ItemsCustomApi
{
PageType = API;
Caption = 'API: Items';
APIPublisher = 'contoso';
APIGroup = 'app1';
APIVersion = 'v2.0';
EntityName = 'item';
EntitySetName = 'items';
SourceTable = Item;
DelayedInsert = true;
Editable = false;
layout
{
area(Content)
{
field(id; SystemId)
{
Caption = 'ID';
}
field("No"; "No.")
{
Caption = 'No.';
}
field("UnitPrice"; "Unit Price")
{
Caption = 'Unit Price';
}
field("VendorNo"; "Vendor No.")
{
Caption = 'Vendor No.';
}
}
}
}
我怀疑我需要在 CanGetById = true
之类的页面中添加一个 属性。不过,我不知道。
docker 中的 BC 版本 运行:mcr.microsoft.com/businesscentral/sandbox:dk
Docker版本:V19.03.12
您需要设置页面 属性 ODataKeyFields
才能 select by id:
ODataKeyFields = SystemId;
我的问题是我无法为特定 itemId
调用我的自定义 API,但是当我调用普通 API 时,它会按预期工作。
目前我可以像这样成功调用特定项目的正常 API:
myBcServer:Port/bc/api/v1.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)
但是当我尝试用我的习惯做同样的事情时 API:
myBcServer:Port/bc/api/contoso/app1/v2.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)
我得到一个错误:
"error": {
"code": "BadRequest_NotFound",
"message": "Bad Request - Error in query syntax. CorrelationId: f7bc0b59-45ac-4293-9f94-108d6436272c."
}
我可以在 /items
成功调用两个 API 版本。我在哪里获得所有项目的列表。
我制作的自定义 API 页面如下所示:
page 50101 ItemsCustomApi
{
PageType = API;
Caption = 'API: Items';
APIPublisher = 'contoso';
APIGroup = 'app1';
APIVersion = 'v2.0';
EntityName = 'item';
EntitySetName = 'items';
SourceTable = Item;
DelayedInsert = true;
Editable = false;
layout
{
area(Content)
{
field(id; SystemId)
{
Caption = 'ID';
}
field("No"; "No.")
{
Caption = 'No.';
}
field("UnitPrice"; "Unit Price")
{
Caption = 'Unit Price';
}
field("VendorNo"; "Vendor No.")
{
Caption = 'Vendor No.';
}
}
}
}
我怀疑我需要在 CanGetById = true
之类的页面中添加一个 属性。不过,我不知道。
docker 中的 BC 版本 运行:mcr.microsoft.com/businesscentral/sandbox:dk Docker版本:V19.03.12
您需要设置页面 属性 ODataKeyFields
才能 select by id:
ODataKeyFields = SystemId;