在策略重写期间,简单地附加到上下文变量的url(例如context.Variables["accountKey"]
)的方法是什么?
最终结果应为/accounts/232
。
我之前在设置
方面取得了成功set-variable (0.003 ms)
{
"message": "Context variable was successfully set.",
"name": "accountKey",
"value": "232"
}
尝试过的其中一件事:
<policies>
<inbound>
<base />
<rewrite-uri template="/accounts/{accountKey}" />
</inbound>
但是我收到了这个错误
> Error Receive
> rewrite-uri (0.260 ms) {
> "messages": [
> null,
> "Variable accountKey has no value.",
> "Variable accountKey has no value."
> ] }
答案 0 :(得分:4)
在策略中配置入站规则,如下所示:
<inbound>
<base />
<set-variable name="accountKey" value="232" />
<rewrite-uri template="@{
return "/account/" + context.Variables.GetValueOrDefault<string>("accountKey");
}"/>
</inbound>
rewrite-uri中的{}用于原始请求URL中的查询字符串参数。
在https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#RewriteURL了解有关rewrite-uri的更多详情。
答案 1 :(得分:2)
就我而言,我的网址是
https://test.com/send/
我需要从上下文变量名称(名称= {myName
)中添加查询字符串
https://test.com/send/myName
这对我有用:
<rewrite-uri template="@($"{(string)context.Variables["name"]}")" />
答案 2 :(得分:0)
我最终使用此调用作为替代方案显示:
<rewrite-uri template="@($"/account/{(string)context.Variables["accountKey"]}/")" />