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' %}

它是一个值数组是有道理的,这就是比较失败的原因。