Создание расширенных политик
Этот раздел содержит справочную информацию по следующим политикам службы "Управление 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>
Другие ресурсы
- Другие примеры политики см. в статье Политики управления API.
- Обработка ошибок в политиках управления API