使用策略模板中的URL模板参数值

时间:2017-02-15 16:36:38

标签: azure-api-management

在API Management中,如何通过策略访问URL模板参数?

在这种情况下,我的操作名为test,HTML动词为GET,网址模板如下 -

  

/测试/ {variable_name1} / {variable_name2}

我的印象是访问参数的值就像{variable_name1}一样简单。但是,下面的示例不会设置变量" rowkey"正如所料。相反,它的值为{variable_name1}-{variable_name2}

我在这里做错了什么?

<policies>
    <inbound>
        <set-variable name="rowkey" value="{variable_name1}-{variable_name2}" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <set-header name="Row-Key" exists-action="override">
            <value>@((string)context.Variables["rowkey"])</value>
        </set-header>
    </outbound>
</policies>

1 个答案:

答案 0 :(得分:6)

您必须使用表达式来实现您想要的目标,例如:

<set-variable 
   name="rowkey" 
   value="@(context.Request.MatchedParameters["variable_name1"] + "-" + context.Request.MatchedParameters["variable_name2"])" />

或使用字符串插值:

<set-variable 
   name="rowkey" 
   value="@($"{context.Request.MatchedParameters["variable_name1"]}-{context.Request.MatchedParameters["variable_name2"]}")" />