Создание расширенных политик

Завершено

Этот раздел содержит справочную информацию по следующим политикам службы "Управление API":

  • Поток управления — условно применяет правила политики на основе результатов вычисления логических выражений.
  • Перенаправляющий запрос — перенаправляет запрос во внутреннюю службу.
  • Ограничения параллелизма не позволяет, чтобы заключенные политики одновременно выполнялись запросами, количество которых выше указанного.
  • Регистрация в концентраторе событий — отправляет сообщения в концентратор событий, который указан сущностью Logger.
  • Макетирование ответа — прекращает выполнение конвейера и возвращает макетированный ответ непосредственно вызывающему объекту.
  • Повторить — повторяет выполнение инструкций встраиваемой политики, если не выполнено условие и до тех пор пока оно не будет выполнено. Выполнение повторяется в указанных интервалах времени и до указанного количества повторных попыток.

Поток управления

В политике choose применяются встраиваемые правила, действие которых зависит от результата вычисления логических выражений, подобно оператору if-then-else или логической структуре переключения в языке программирования.

<choose>
    <when condition="Boolean expression | Boolean constant">
        <!— one or more policy statements to be applied if the above condition is true  -->
    </when>
    <when condition="Boolean expression | Boolean constant">
        <!— one or more policy statements to be applied if the above condition is true  -->
    </when>
    <otherwise>
        <!— one or more policy statements to be applied if none of the above conditions are true  -->
</otherwise>
</choose>

Политика потока управления должна содержать по крайней мере один элемент <when/>. Элемент <otherwise/> необязательный. Условия в элементах <when/> вычисляются в порядке их расположения в политике. Операторы политики, заключенные в первый <when/> элемент, применяются, когда атрибут условия имеет значение true. Политики, заключенные в <otherwise/> элемент, если присутствуют, применяются, если все <when/> атрибуты условия элемента имеют значение false.

Перенаправляющий запрос

Политика forward-request перенаправляет входящий запрос в серверную службу, указанную в контексте запроса. URL-адрес внутренней службы, заданный в параметрах API, может быть изменен с помощью политики задания внутренней службы.

Удаление этой политики приводит к тому, что запрос не перенаправляется в серверную службу. Политики в разделе исходящего трафика оцениваются сразу после успешного завершения политик в разделе входящего трафика.

<forward-request timeout="time in seconds" follow-redirects="true | false"/>

Ограничение параллелизма

Политика limit-concurrency не позволяет, чтобы заключенные политики одновременно выполнялись запросами, количество которых выше указанного. Если запросы превышают это число, новые запросы немедленно завершаются ошибкой с кодом состояния 429 слишком много запросов .

<limit-concurrency key="expression" max-count="number">
        <!— nested policy statements -->
</limit-concurrency>

Регистрировать в концентраторе событий

Политика log-to-eventhub отправляет сообщения в определенном формате концентратору событий, который указан сущностью Logger. Как и предполагает ее имя, эта политика используется для сохранения контекстных сведений выбранного запроса или ответа для сетевого или автономного анализа.

<log-to-eventhub logger-id="id of the logger entity" partition-id="index of the partition where messages are sent" partition-key="value used for partition assignment">
  Expression returning a string to be logged
</log-to-eventhub>

Макет ответа

Политика mock-response, как следует из имени, используется для макетирования интерфейсов API и операций. Она прекращает выполнение конвейера и возвращает макетированный ответ вызывающему объекту. Эта политика всегда пытается вернуть ответы наивысшего качества. При возможности, она предпочитает примеры содержимого ответа. Он создает примеры ответов из схем, когда предоставляются схемы и примеры не являются. Если примеры или схемы не найдены, возвращаются ответы без содержимого.

<mock-response status-code="code" content-type="media type"/>

Повторить попытку

Политика retry выполняет свои дочерние политики один раз и затем повторяет их выполнение до тех пор, пока параметр condition попыток не примет значение false или параметр count попыток не будет исчерпан.

<retry
    condition="boolean expression or literal"
    count="number of retry attempts"
    interval="retry interval in seconds"
    max-interval="maximum retry interval in seconds"
    delta="retry interval delta in seconds"
    first-fast-retry="boolean expression or literal">
        <!-- One or more child policies. No restrictions -->
</retry>

Возвращаемый ответ

Политика return-response прерывает выполнение конвейера и возвращает вызывающему объекту ответ по умолчанию или настраиваемый ответ. По умолчанию возвращается код 200 OK без текста. Можно указать настраиваемый ответ с помощью переменной контекста или правил политики. При указании обоих оператор политики изменяет переменную контекста перед возвратом вызывающей стороне.

<return-response response-variable-name="existing context variable">
  <set-header/>
  <set-body/>
  <set-status/>
</return-response>

Другие ресурсы