【发布时间】:2020-01-25 16:32:41
【问题描述】:
我正在 Azure API 管理实例中配置入站策略。
首先,我设置一个变量:
<set-variable name="var1" value="" />
然后我发送请求
<send-request mode="new" response-variable-name="var1" timeout="20" ignore-error="false">
返回 JSON。测试时,我在跟踪选项卡中收到以下消息:
已发送对“https://my-api.azure-api.net/api/data”的 GET 请求,结果存储在“var1”变量中。
我猜发送请求策略有效,结果存储在变量中。 然后我想返回一个响应(仍在入站,尝试在出站时得到 500):
<return-response response-variable-name="existing response variable">
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>
{
"success": true,
"var1": context.Variables["var1"]
}
</set-body>
</return-response>
我的问题是它不起作用...它只是呈现context.Variables["var1"]。
也是如此:
@context.Variables["var1"]@{ context.Variables.GetValueOrDefault<string>("var1") }@context.Variables.GetValueOrDefault("var1")
所有这些都按书面形式呈现,没有提取任何值。
编辑:我也尝试添加占位符字符串,然后使用
<find-and-replace from="Placeholder" to="context.Variables.GetValueOrDefault("var1")" />
并尝试将其放置在入站和出站中。但这项政策并未推出。
这是一个 JSON 对象,我想附加到响应中(小细节:实际上我遇到了多个变量的问题)。
我的问题是:如何将我声明的变量添加到响应中?
【问题讨论】:
标签: azure string-concatenation azure-api-management