我正在尝试将 Azure(api 管理)中的 API 端点连接到后端服务。但是,set-body 策略无法识别我的 JSON 主体,因此不会将其转换为后端调用。
对于“液体”和“无”模板,我已经尝试了所有我能想到的迭代。微软文档是无用的,因为即使“液体”模板在文档中也是大写的,而它需要小写。即使是每个人都指出的 Deep Dive 文章也是误导和/或过时的。
我曾经能够使用液体模板获得 {{context.Request.OriginalUrl}} 引用以工作,但我似乎无法获得 {{body.json}} 引用工作
这是我在该部分中的政策(纯粹是为了测试 - 这对我正在做的事情没有用):
<set-body template="liquid">
Calling User Agent: {{context.Request.OriginalUrl}}
</set-body>
这是我必须尝试读取 json 正文的示例(通过 POST 传递):
<set-body template="liquid">{{body}}</set-body>
我已经尝试了几次迭代和输入,如下所示:
<set-body template="liquid">{{body.json}}</set-body>
在穿过这样的身体时:
{"json":"this is an example body"}
无论我做什么,这都是我在测试调用后在跟踪中看到的:
set-body (0.069 ms)
{
"input": null,
"output": ""
}
我显然愿意使用“无”模板,但我遇到了同样的问题。文档是错误的 - 如果我复制/粘贴示例:
<set-body>@(context.Body.As<String>())</set-body>
我收到如下错误:
One or more fields contain incorrect values:
Error in element 'set-body' on line 32, column 10: 'IProxyRequestContext' does not contain a definition for 'Body' and no extension method 'Body' accepting a first argument of type 'IProxyRequestContext' could be found (are you missing a using directive or an assembly reference?)
当我确实让它没有错误时,它返回相同的“输出”:“”输出。