gpt4 book ai didi

azure - 在策略定义中返回响应时如何使用变量?

转载 作者:行者123 更新时间:2023-12-05 09:12:30 27 4
gpt4 key购买 nike

我正在 Azure API 管理实例中配置入站策略。

首先,我设置一个变量:

<set-variable name="var1" value="" />

然后我发送请求

<send-request mode="new" response-variable-name="var1" timeout="20" ignore-error="false">

它返回一个 JSON。测试时,我在跟踪选项卡中收到以下消息:

GET request to 'https://my-api.azure-api.net/api/data' has been sent, result stored in 'var1' variable.

我猜发送请求策略有效并且结果存储在变量中。然后我想返回一个响应(仍在入站中,当尝试在出站中执行此操作时,我得到 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 对象(小细节:实际上我有多个变量的问题)。

我的问题是:如何将声明的变量添加到响应中?

最佳答案

有两种方法可以解决这个问题。您可以为此使用策略表达式: https://learn.microsoft.com/en-us/azure/api-management/api-management-policy-expressions 。要记住的是,它们只能用于构建政策的整体值(value),而不是政策的一部分,因此:

<set-body>@("{\"success\": true, \"var1\": " + ((IResponse)context.Variables["var1"]).Body.As<string>() + "}"</set-body>

或者通过 set-body 策略,您可以使用液体模板:

<set-variable name="var1body" value="@((IResponse)context.Variables["var1"]).Body.As<string>())" />
<set-body template="liquid">
{
"success": true,
"var1": {{context.Variables["var1body"]}}
}
</set-body>

关于azure - 在策略定义中返回响应时如何使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58099128/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com