首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >业务中心:客户应用编程接口getById不工作

业务中心:客户应用编程接口getById不工作
EN

Stack Overflow用户
提问于 2020-09-15 21:40:06
回答 1查看 74关注 0票数 1

我的问题是我不能为特定的itemId调用我的自定义API,但是当我调用普通API时,它可以正常工作。

目前,我可以成功地调用特定项的正常API,如下所示:

代码语言:javascript
复制
myBcServer:Port/bc/api/v1.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)

但是当我尝试用我的自定义API做同样的事情时:

代码语言:javascript
复制
myBcServer:Port/bc/api/contoso/app1/v2.0/companies(666e508d-9abb-ea11-bbac-000d3a492c82)/items(a5dc88b9-9abb-ea11-bbac-000d3a492c82)

我得到一个错误:

代码语言:javascript
复制
"error": {
        "code": "BadRequest_NotFound",
        "message": "Bad Request - Error in query syntax.  CorrelationId:  f7bc0b59-45ac-4293-9f94-108d6436272c."
    }

我可以在/items上成功地调用这两个API版本。在那里我得到了所有项目的列表。

我制作的自定义API页面如下所示:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 14:32:47

您需要将页面属性ODataKeyFields设置为能够按id进行选择:

代码语言:javascript
复制
ODataKeyFields = SystemId;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63903158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档