Respuestas de gateway en API Gateway - Amazon API Gateway

Respuestas de gateway en API Gateway

Una respuesta de gateway se identifica mediante un tipo de respuesta definido por API Gateway. La respuesta se compone de un código de estado HTTP, un conjunto de encabezados adicionales especificados mediante asignaciones de parámetros y una carga generada por una plantilla de asignación distinta de VTL.

En la API REST de API Gateway, una respuesta de gateway se representa mediante GatewayResponse. En OpenAPI, una instancia de GatewayResponse se describe mediante la extensión x-amazon-apigateway-gateway-responses.gatewayResponse.

Para habilitar una respuesta de gateway, debe configurar una para un tipo de respuesta admitido en el nivel de API. Siempre que API Gateway devuelve una respuesta de este tipo, se aplican las plantillas de mapeo de encabezados y cargas definidas en la respuesta de gateway para devolver los resultados asignados al intermediario de la API.

En la siguiente sección, le mostramos cómo configurar respuestas de gateway utilizando la consola de API Gateway y la API REST de API Gateway.

Configuración de respuestas de gateway para personalizar respuestas de errores

Si API Gateway no puede procesar una solicitud entrante, devuelve al cliente una respuesta de error sin reenviar la solicitud al backend de integración. De forma predeterminada, la respuesta de error contiene un breve mensaje de error descriptivo. Por ejemplo, si intenta llamar a una operación en un recurso de API no definido, recibe una respuesta de error con el mensaje { "message": "Missing Authentication Token" }. Si es la primera vez que utiliza API Gateway, es posible que le resulte difícil entender qué es lo que ha ocurrido.

Para algunas de las respuestas de error, API Gateway permite a los desarrolladores de API que personalicen las respuestas de forma que devuelvan las respuestas en formatos diferentes. Para el ejemplo de Missing Authentication Token, puede añadir una pista a la carga de respuesta original con la posible causa, como en este ejemplo: {"message":"Missing Authentication Token", "hint":"The HTTP method or resources may not be supported."}.

Cuando la API es un mediador entre un intercambio externo y AWS Cloud, se utilizan plantillas de asignación de VTL para la solicitud de integración o la respuesta de integración para asignar la carga de un formato a otro. Sin embargo, las plantillas de asignación de VTL solo funcionan para solicitudes válidas con respuestas correctas.

En el caso de las solicitudes no válidas, API Gateway omite la integración en su totalidad y devuelve una respuesta de error. Debe utilizar la personalización para representar las respuestas de error en un formato compatible con el intercambio. Aquí, la personalización se presenta en una plantilla de asignación que no es de VTL que solo admite sustituciones de variables sencillas.

Con el fin de generalizar la respuesta de error generada por API Gateway a cualquier respuesta generada por API Gateway, nos referimos a estas respuestas como respuesta de gateway. Esto permite distinguir las respuestas generadas por API Gateway de las respuestas de integración. Una plantilla de asignación de respuesta de gateway puede tener acceso a los valores de la variable $context y a los valores de la propiedad $stageVariables, así como a los parámetros de solicitud de método, con el formato method.request.param-position.param-name.

Para obtener más información acerca de las variables $context, consulte Variables $context para modelos de datos, autorizadores, plantillas de mapeo y registro de acceso de CloudWatch. Para obtener más información acerca de $stageVariables, consulte $stageVariables. Para obtener más información sobre los parámetros de solicitud de método, consulte Variables $input.