在策略模板中使用 URL 模板参数值
Work with URL template parameter values in policy templates
在API管理中,如何通过策略访问URL模板参数?
在这个实例中,我的操作称为test
,HTML动词是GET
,URL模板如下-
/test/{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>
您必须使用表达式来实现您想要的,例如:
<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"]}")" />
在API管理中,如何通过策略访问URL模板参数?
在这个实例中,我的操作称为test
,HTML动词是GET
,URL模板如下-
/test/{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>
您必须使用表达式来实现您想要的,例如:
<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"]}")" />