策略重写 uri 以在 Azure APIM 中附加上下文变量
Policy rewrite-uri To Append Context Variable in Azure APIM
在策略重写期间简单附加到上下文变量(例如 context.Variables["accountKey"]
)的 url 的方法是什么?
最终结果应该是/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."
> ] }
在策略中配置入站规则如下:
<inbound>
<base />
<set-variable name="accountKey" value="232" />
<rewrite-uri template="@{
return "/account/" + context.Variables.GetValueOrDefault<string>("accountKey");
}"/>
</inbound>
rewrite-uri 中的 {} 用于原始请求中的查询字符串参数 URL.
在 Rewrite URL - API Management transformation policies 的 Microsoft 文档中查找有关 rewrite-uri 部分的更多详细信息。
我最终使用此调用作为替代方法:
<rewrite-uri template="@($"/account/{(string)context.Variables["accountKey"]}/")" />
就我而言,我的 URL 是
https://test.com/send/
我需要从上下文变量名称(名称 = myName
)添加查询字符串
https://test.com/send/myName
这对我有用:
<rewrite-uri template="@($"{(string)context.Variables["name"]}")" />
在策略重写期间简单附加到上下文变量(例如 context.Variables["accountKey"]
)的 url 的方法是什么?
最终结果应该是/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."
> ] }
在策略中配置入站规则如下:
<inbound>
<base />
<set-variable name="accountKey" value="232" />
<rewrite-uri template="@{
return "/account/" + context.Variables.GetValueOrDefault<string>("accountKey");
}"/>
</inbound>
rewrite-uri 中的 {} 用于原始请求中的查询字符串参数 URL.
在 Rewrite URL - API Management transformation policies 的 Microsoft 文档中查找有关 rewrite-uri 部分的更多详细信息。
我最终使用此调用作为替代方法:
<rewrite-uri template="@($"/account/{(string)context.Variables["accountKey"]}/")" />
就我而言,我的 URL 是
https://test.com/send/
我需要从上下文变量名称(名称 = myName
)添加查询字符串
https://test.com/send/myName
这对我有用:
<rewrite-uri template="@($"{(string)context.Variables["name"]}")" />