Business Central: custom api getById не работает
Моя проблема в том, что я не могу вызвать свой собственный API для определенного
itemId
однако, когда я вызываю обычный 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."
}
Я могу успешно вызвать обе версии API по адресу
/items
. Где я получаю список всех предметов.
Созданная мной страница пользовательского 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
. Однако я не знаю.
Версия BC запускается в докере: mcr.microsoft.com/businesscentral/sandbox:dk Версия докера: V19.03.12
1 ответ
Вам необходимо установить свойство страницы
ODataKeyFields
чтобы иметь возможность выбирать по id:
ODataKeyFields = SystemId;