Как добавить в связанную политику обработки в APIM? - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь добавить следующее в связанную политику обработки для моего APIM для операции:

<policies>
    <inbound>
        <base />
        <rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />
        <set-header name="ocp-apim-subscription-key" exists-action="override">
            <value>12d0bdd57ca84fa9ad35f13f22605dbf</value>
        </set-header>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

Я нашел этот командлет, однако нет никакой информации о том, что вставить в -Policy.

Я пытался использовать следующее

    $policyString = '<policies>
    <inbound>
        <base />
        <rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />
        <set-header name="ocp-apim-subscription-key" exists-action="override">
            <value>12d0bdd57ca84fa9ad35f13f22605dbf</value>
        </set-header>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>'

Set-AzureRmApiManagementPolicy -Context $apiMgmtContext -ApiId $apiId -Policy $policyString -OperationId 'GetCalendar'

Но это дает мне эту ошибку:

Operation returned an invalid status code 'BadRequest'

В каком формате ожидается параметр политики?

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Я могу воспроизвести вашу проблему, формат параметра -Policy кажется правильным, проблема была вызвана rewrite-uri в вашей политике.

<rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />

enter image description here

Я тестирую его с образцом в официальном документе, он отлично работает.

<rewrite-uri template="/put" />

enter image description here

Для получения более подробной информации об использовании rewrite-uri, вы можете обратиться к этой ссылке .

0 голосов
/ 30 апреля 2019

Спасибо Джой Вану за то, что он указал мне правильное направление, вот решение:

Я попытался добавить XML напрямую через портал и получил эту ошибку:

Одно или несколько полей содержат неверные значения: ошибка в элементе 'rewrite-uri' в строке 4, столбец 10: только параметры, указанные в оригинальный шаблон URL можно использовать в шаблоне перезаписи

Оказывается, параметры, на которые я ссылался (StartDateTime и AppointmentType), не были частью параметров шаблона в APIM.

Как только я добавил их в качестве параметров шаблона в APIM, команда сработала.

Было бы хорошо, если бы командлет Powershell возвращал ту же ошибку, что и портал Azure, а не просто «BadRequest»

...