Azure Liquid 模板参数对比
Azure Liquid Template Parameter Comparison
我在 Azure API 管理器传出策略中进行了简单测试
<policies>
<inbound>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<set-body template="liquid">
{% if context.Request.OriginalUrl.Query.param1 == 'test' %}
Matched
{% else %}
Not Matched
{% endif %}
Hello : {{context.Request.OriginalUrl.Query.param1}}
</set-body>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
而我post
/echo/resource?param1=test
我明白了
Not Matched
Hello : test
我无法弄清楚检查 param1 的值并在正文中采取相应行动的语法。我还没有找到任何有帮助的体面文档。我试过这个以及
{% if context.Request.OriginalUrl.Query.param1.Equals('test') %}
有人可以建议我检查这个的语法吗?这应该是微不足道的,它让我发疯! :)
谢谢
如果我使用变量它对我有用:
<policies>
<inbound>
<set-variable name="param" value="@(context.Request.Url.Query.GetValueOrDefault("param1"))" />
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<set-body template="liquid">
{% if context.Variables["param"] == 'test' %}
Matched
{% else %}
Not Matched
{% endif %}
Hello : {{context.Request.OriginalUrl.Query.param1}}
</set-body>
<base />
</outbound>
<on-error>
<base />
</on-error>
结果:
Matched
Hello: test
除了马库斯的回答你也可以这样做
{% if context.Request.OriginalUrl.Query.param1[0] == 'test' %}
它是一个值数组是有道理的,这就是比较失败的原因。
我在 Azure API 管理器传出策略中进行了简单测试
<policies>
<inbound>
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<set-body template="liquid">
{% if context.Request.OriginalUrl.Query.param1 == 'test' %}
Matched
{% else %}
Not Matched
{% endif %}
Hello : {{context.Request.OriginalUrl.Query.param1}}
</set-body>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
而我post
/echo/resource?param1=test
我明白了
Not Matched
Hello : test
我无法弄清楚检查 param1 的值并在正文中采取相应行动的语法。我还没有找到任何有帮助的体面文档。我试过这个以及
{% if context.Request.OriginalUrl.Query.param1.Equals('test') %}
有人可以建议我检查这个的语法吗?这应该是微不足道的,它让我发疯! :)
谢谢
如果我使用变量它对我有用:
<policies>
<inbound>
<set-variable name="param" value="@(context.Request.Url.Query.GetValueOrDefault("param1"))" />
<base />
</inbound>
<backend>
<base />
</backend>
<outbound>
<set-body template="liquid">
{% if context.Variables["param"] == 'test' %}
Matched
{% else %}
Not Matched
{% endif %}
Hello : {{context.Request.OriginalUrl.Query.param1}}
</set-body>
<base />
</outbound>
<on-error>
<base />
</on-error>
结果:
Matched
Hello: test
除了马库斯的回答你也可以这样做
{% if context.Request.OriginalUrl.Query.param1[0] == 'test' %}
它是一个值数组是有道理的,这就是比较失败的原因。