Creación de directivas avanzadas
Esta unidad proporciona una referencia para las siguientes directivas de API Management:
- Flujo de control: aplica condicionalmente instrucciones de directiva basadas en los resultados de la evaluación de expresiones booleanas.
- Reenviar solicitud : reenvía la solicitud al servicio back-end.
- Limitar la simultaneidad: evita que las directivas delimitadas las ejecute simultáneamente un número de solicitudes mayor que el especificado.
- Registro en centro de eventos: envía mensajes en el formato especificado a un centro de eventos definido por una entidad de registrador.
- Mock response (Simular respuesta): anula la ejecución de la canalización y devuelve la respuesta ficticia directamente al llamador.
- Reintentar : reintenta ejecutar las instrucciones de directiva adjuntas, si y hasta que se cumple la condición. La ejecución se repite en los intervalos de tiempo especificados y hasta el recuento de reintentos especificado.
Flujo de control
La directiva choose
aplica las instrucciones de directiva adjuntas en función del resultado de la evaluación de expresiones booleanas, similares a un constructor if-then-else o de modificador en un lenguaje de programación.
<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>
La directiva de flujo de control debe contener al menos un elemento <when/>
. El elemento <otherwise/>
es opcional. Las condiciones de los elementos <when/>
se evalúan en orden de aparición dentro de la directiva. Las instrucciones de directiva incluidas en el primer elemento <when/>
se aplican cuando el atributo de condición es true. Las directivas incluidas en el elemento <otherwise/>
, si están presentes, se aplican si todos los atributos de condición de elemento <when/>
son false.
Solicitud de reenvío
La directiva forward-request
reenvía la solicitud entrante al servicio back-end especificado en el contexto de la solicitud. La dirección URL del servicio back-end se especifica en la configuración de la API y se puede cambiar mediante la directiva de establecimiento del servicio back-end.
Si quita los resultados de esta directiva en la solicitud, no se reenviarán al servicio back-end. Las directivas de la sección de salida se evalúan inmediatamente después de la finalización correcta de las directivas en la sección de entrada.
<forward-request timeout="time in seconds" follow-redirects="true | false"/>
Limitar la simultaneidad
La directiva limit-concurrency
evita que las directivas delimitadas ejecuten en un momento dado un número de solicitudes mayor que el especificado. Cuando las solicitudes superan ese número, las nuevas solicitudes producen un error inmediatamente con un código de estado 429 Demasiadas solicitudes.
<limit-concurrency key="expression" max-count="number">
<!— nested policy statements -->
</limit-concurrency>
Registro en centro de eventos
La directiva log-to-eventhub
envía mensajes en el formato especificado a un centro de eventos definido por una entidad del registrador. Como su nombre indica, la directiva se usa para guardar información de contexto de respuesta o solicitud que se ha seleccionado para su análisis en línea o sin conexión.
<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>
Similar respuesta
mock-response
, como el nombre indica, se utiliza para simular las API y las operaciones. Se anula la ejecución de la canalización normal y devuelve una respuesta simulada al llamador. La directiva siempre trata de devolver las respuestas de mayor fidelidad. Prefiere ejemplos de contenido de respuesta, siempre que estén disponibles. Genera las respuestas de ejemplo a partir de esquemas, cuando se proporcionan esquemas y no ejemplos. Si no se encuentran ejemplos o esquemas, se devuelven respuestas sin contenido.
<mock-response status-code="code" content-type="media type"/>
Reintento
La directiva retry
ejecuta sus directivas secundarias una vez y después vuelve a tratar de ejecutarla hasta que el elemento condition
del reintento pasa a ser false
o se agota el número correspondiente al elemento count
del reintento.
<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>
Devolución de respuesta
La directiva return-response
anula la ejecución de la canalización y devuelve una respuesta personalizada o predeterminada al autor de la llamada. La respuesta predeterminada es 200 OK
sin cuerpo. La respuesta personalizada se puede especificar mediante declaraciones de directiva o variable de contexto. Cuando se proporcionan ambos, la instrucción de la directiva modifica la variable de contexto antes de volver al autor de la llamada.
<return-response response-variable-name="existing context variable">
<set-header/>
<set-body/>
<set-status/>
</return-response>
Otros recursos
- Consulte las directivas de API Management para obtener más ejemplos de directivas.
- Control de errores en las directivas de API Management