Политика rewrite-uri для добавления контекстной переменной в Azure APIM - PullRequest
0 голосов
/ 18 мая 2018

Каков подход к простому добавлению к 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."
>     ] }

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

В итоге я использовал этот вызов, как показано в качестве альтернативы:

<rewrite-uri template="@($"/account/{(string)context.Variables["accountKey"]}/")" />

0 голосов
/ 19 мая 2018

Сконфигурируйте правило входящих сообщений в политике следующим образом:

<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.

...