Azure API管理-如何随我的请求发送正文
我在Azure上托管了一个API,并且我已经开始使用Azure API管理。我的一个API端点是GET,它需要一个JSON形式的主体传递给端点。在我的邮递员上,我能够点击实际的API(托管在Azure上)并发送身体,我能够得到一些结果。但是,当我尝试在azure api管理上点击api时,我得到了以下异常,尽管我正在发送请求正文:Azure API管理-如何随我的请求发送正文,azure,api,azure-api-management,Azure,Api,Azure Api Management,我在Azure上托管了一个API,并且我已经开始使用Azure API管理。我的一个API端点是GET,它需要一个JSON形式的主体传递给端点。在我的邮递员上,我能够点击实际的API(托管在Azure上)并发送身体,我能够得到一些结果。但是,当我尝试在azure api管理上点击api时,我得到了以下异常,尽管我正在发送请求正文: { "errors": { "": [ "A non-empty request body is required."
{
"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>
应用程序/json
{{body.json}}}
如果您能了解我如何解决此问题,我们将不胜感激。请提前感谢。我可以使用以下策略设置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>
应用程序/json
{“QueryString”:“123”,“param1”:“456”}
@{
JObject inBody=context.Request.Body.As();
返回inBody.ToString();
}
当我测试它时,我可以看到它已成功添加到body中。我还可以通过使用context.Request.body.As()
获得它
我注意到您的主体是{{body.json}}
,它的格式似乎不正确。您应该使用{body.json}
,并确保body.json
包含准确的内容。根据规范:随GET请求发送body没有定义的行为,这样的请求可能会被完全拒绝。添加@{JObject inBody=context.request.body.As();return inBody.ToString()}
查看是否可以在跟踪中获取正文内容。