当前位置: 首页 > 知识库问答 >
问题:

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

尹承泽
2023-03-14

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

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

我想发送请求策略是有效的,结果存储在变量中。然后我想返回一个响应(仍然在入站中,当试图在出站中这样做时,我得到了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”]

也是如此:

    null
<find-and-replace from="Placeholder" to="context.Variables.GetValueOrDefault("var1")" />

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

共有1个答案

龙洛城
2023-03-14

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

<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>
 类似资料:
  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

  • 用于自定义设置隐藏虚拟机、镜像菜单功能以及配置第三方回调地址。 策略定义用于定义策略的具体内容,如设置隐藏虚拟机、系统镜像菜单功能以及配置第三方回调地址等。策略配置完成后,还需要将策略分配到具体项目、域或全局,策略分配成功后将出现在策略分配列表。即策略在具体的应用范围内才会生效。当策略在不同应用范围内有冲突时,最小应用范围的策略生效。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击

  • 问题内容: 我正在使用和自定义字体选择器。我希望显示所有可用的字体,每种字体名称以其自己的字体显示。我目前使用大约500种字体。 提供此功能的的示例: 问题在于,使用此渲染器时,在程序执行过程中,对象将变得无响应。第一次单击组合框以显示列表时,加载列表需要花费几秒钟的时间。第二次单击时,列表立即显示。 如果有人评论这一行 ,组合框就可以了。 如何防止这种反应迟钝? 问题答案: 发生的是,组合的内部

  • 问题内容: 例如,此URL: 应该返回一个类型的响应。我有两个静态图片, 如果type为1,则应该返回,否则返回。在烧瓶中怎么做? 问题答案: 你使用类似 发送回或,具体取决于类型查询参数。有关更多信息,请参见函数和对象的文档。

  • 找不到项目时尝试发送自定义错误消息case correct生成所需的响应。但是没有生成所需的响应(响应总是空的,状态代码为200) 作者服务。JAVA Resource.java