Tutorial: Transformación y protección de una API
SE APLICA A: todos los niveles de API Management
En este tutorial, obtendrá información sobre cómo configurar directivas para proteger o transformar su API. Las directivas son un conjunto de instrucciones que se ejecutan secuencialmente en la solicitud o respuesta de una API y que modifican su comportamiento.
Por ejemplo, es posible que quiera establecer un encabezado de respuesta personalizado. O bien, proteja su API de back-end configurando una directiva de límite de velocidad, para que la API no sea utilizada en exceso por los desarrolladores. Estos ejemplos son una introducción sencilla a las directivas de API Management. Para obtener más opciones sobre la directiva, consulte Directivas de API Management.
Nota
De forma predeterminada, API Management configura una directiva global forward-request
. La directiva forward-request
es necesaria para que la puerta de enlace complete una solicitud a un servicio back-end.
En este tutorial, aprenderá a:
- Transformación de una API para establecer un encabezado de respuesta personalizado
- Protección de una API agregando una directiva de límite de frecuencia (limitación)
- Prueba de las transformaciones
Requisitos previos
- Conocer la terminología de API Management de Azure.
- Comprender el concepto de directivas en API Management de Azure.
- Complete el siguiente inicio rápido: Creación de una instancia de Azure API Management. Para este tutorial, se recomienda usar uno de los niveles clásicos o v2, por ejemplo, el nivel Desarrollador o el nivel Básico v2. El nivel Consumo no admite todas las directivas que se usan en este tutorial.
- Además, realice el siguiente tutorial: Importación y publicación de la primera API.
Vaya a la instancia de API Management.
En Azure Portal, busque y seleccione Servicios de API Management.
En la página de servicios API Management, seleccione la instancia de API Management.
Prueba de la respuesta original
Para ver la respuesta original, siga estos pasos:
- En la instancia de servicio de API Management, seleccione API.
- Seleccione Swagger Petstore en la lista de API.
- Seleccione la pestaña Prueba en la parte superior de la pantalla.
- Seleccione la operación GET Finds pets by status y, opcionalmente, seleccione un valor diferente del parámetro status parámetro de consulta. Selecciona Enviar.
La respuesta de la API original debe ser similar a la siguiente:
Transformación de una API para agregar un encabezado de respuesta personalizado
API Management incluye varias directivas de transformación que puede usar para modificar cargas de solicitud o respuesta, encabezados o códigos de estado. En este ejemplo, se establece un encabezado de respuesta personalizado en la respuesta de la API.
Establecimiento de la directiva de transformación
Esta sección le muestra cómo configurar un encabezado de respuesta personalizado usando la directiva set-header
. Aquí se usa un editor de directivas basado en formularios que simplifica la configuración de las directivas.
Seleccione Swagger Petstore>Diseño>Todas las operaciones.
En la sección Procesamiento de salida, seleccione Agregar directiva.
En la ventana Agregar directiva de salida, seleccione Establecer encabezados.
Para configurar el conjunto de directivas de encabezados, haga lo siguiente:
- En Nombre, escriba Personalizado.
- En Valor, seleccione + Agregar valor. Escriba "Mi valor personalizado".
- Seleccione Guardar.
Tras la configuración, aparece un elemento de directiva set-header en la sección Procesamiento de salida.
Protección de una API agregando la directiva de límite de frecuencia (limitación)
En esta sección se muestra cómo agregar protección a la API de back-end mediante la configuración de límites de velocidad, de modo que los desarrolladores no usen demasiado la API. En este ejemplo se muestra cómo configurar la directiva rate-limit-by-key
mediante el editor de código. En este ejemplo, el límite se establece en tres llamadas por 15 segundos. Después de 15 segundos, un desarrollador puede volver a tratar de llamar a la API.
Nota:
Esta directiva no se admite en el nivel Consumo.
Seleccione Swagger Petstore>Diseño>Todas las operaciones.
En la sección Procesamiento de entrada, seleccione el icono del editor de código (</>).
Coloque el cursor dentro del elemento
<inbound>
en una línea en blanco. A continuación, seleccione Mostrar fragmentos de código en la esquina superior derecha de la pantalla.En la ventana derecha, en Access restriction policies (Directivas de restricción de acceso), seleccione Limit call rate per key (Limitar la frecuencia de llamadas por clave).
El elemento
<rate-limit-by-key />
se agrega en la posición del cursor.Cambie el código
<rate-limit-by-key />
en el elemento<inbound>
por el código siguiente. Después, seleccione Guardar.<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
Prueba de las transformaciones
Llegados a este punto, si examina el código en el editor de código, las directivas tienen el aspecto del código siguiente:
<policies>
<inbound>
<rate-limit calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
<base />
</inbound>
<outbound>
<set-header name="Custom" exists-action="override">
<value>"My custom value"</value>
</set-header>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
En el resto de esta sección se prueban transformaciones de directiva que estableció en este artículo.
Prueba del encabezado de respuesta personalizado
Seleccione Swagger Petstore>Prueba.
Seleccione la operación GET Finds pets by status y, opcionalmente, seleccione un valor diferente del parámetro status parámetro de consulta. Selecciona Enviar.
Como puede ver, se agrega el encabezado de respuesta personalizado:
Prueba del límite de frecuencia (limitación)
Seleccione Swagger Petstore>Prueba.
Seleccione la operación GET Finds Pets by Status. Seleccione Enviar varias veces en una fila.
Después de enviar demasiadas solicitudes en el período configurado, obtendrá la respuesta 429 Demasiadas solicitudes.
Espere 15 segundos o más, y luego seleccione de nuevo Enviar. Esta vez debería obtener una respuesta 200 OK.
Resumen
En este tutorial ha aprendido a:
- Transformación de una API para establecer un encabezado de respuesta personalizado
- Protección de una API agregando una directiva de límite de frecuencia (limitación)
- Prueba de las transformaciones
Pasos siguientes
Avance hasta el siguiente tutorial: