我在 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>
任何关于我如何解决这个问题的见解将非常感激。先谢谢你。
我可以使用下面的策略来设置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>()
.
我注意到,你的身体是 {{body.json}}"}
,似乎格式不对。您应该使用 {{body.json}}
并确保 body.json
含有确切的内容。
按照规范。https:/tools.ietf.orghtmlrfc7231#section-4.3.1。 在GET请求的同时发送body并没有定义行为,并且可能会被拒绝。