Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure API管理-如何随我的请求发送正文_Azure_Api_Azure Api Management - Fatal编程技术网

Azure 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."

我在Azure上托管了一个API,并且我已经开始使用Azure API管理。我的一个API端点是GET,它需要一个JSON形式的主体传递给端点。在我的邮递员上,我能够点击实际的API(托管在Azure上)并发送身体,我能够得到一些结果。但是,当我尝试在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>

应用程序/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()}
查看是否可以在跟踪中获取正文内容。