Azure API 管理 - 如何将主体与请求一起发送?

问题描述 投票:0回答:1

我在 Azure 上托管了一个 API,并且我已经开始使用 Azure API 管理。我的一个 API 端点是一个 GET,它需要以 JSON 的形式向端点传递一个 body。在我的邮递员上,我能够点击实际的API(托管在Azure上)并发送body,我能够得到一些结果。但是当我试图在Azure api管理上点击api时,我得到了以下异常,尽管我发送了请求主体。

{
    "errors": {
        "": [
            "A non-empty request body is required."
        ]
    },
    "type": "https://tools.ietf.org/html/rfcXXXX#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "XXXXXXXXXXXXXXXXXXXXXXXXXXX"
}

我缺少一些配置 在Azure Api管理?我确实查找了设置的策略,我在入站时使用了以下内容,但这仍然无法正常工作。

<set-header name="Content-Type" exists-action="override">
    <value>application/json</value>
</set-header>
<set-body template="liquid">{{body.json}}"}</set-body>

任何关于我如何解决这个问题的见解将非常感激。先谢谢你。

azure api azure-api-management
1个回答
0
投票

我可以使用下面的策略来设置GET请求体。

<inbound>
    <base />
    <set-header name="Content-Type" exists-action="override">
        <value>application/json</value>
    </set-header>
    <set-body template="liquid">{"QueryString": "123", "param1": "456"}</set-body>
    <set-body>@{ 
        JObject inBody = context.Request.Body.As<JObject>(); 
        return inBody.ToString(); 
    }</set-body>
</inbound>

当我测试的时候,我可以看到它已经成功地添加到body中。而且我也可以通过使用 context.Request.Body.As<JObject>().

enter image description here

我注意到,你的身体是 {{body.json}}"},似乎格式不对。您应该使用 {{body.json}} 并确保 body.json 含有确切的内容。


0
投票

按照规范。https:/tools.ietf.orghtmlrfc7231#section-4.3.1。 在GET请求的同时发送body并没有定义行为,并且可能会被拒绝。

© www.soinside.com 2019 - 2024. All rights reserved.