Configuración de una respuesta de método en API Gateway
Una respuesta de método de API encapsula el resultado de una solicitud de método de API que el cliente recibirá. Los datos de salida incluyen un código de estado HTTP, algunos encabezados y posiblemente un cuerpo.
Con las integraciones que no sean de proxy, los parámetros de respuesta especificados y el cuerpo se pueden asignar desde los datos de respuesta de integración asociados o se les pueden asignar determinados valores estáticos según las asignaciones. Estas asignaciones se especifican en la respuesta de integración. La asignación puede ser una transformación idéntica que transfiere la respuesta de integración tal y como es.
Con una integración de proxy, API Gateway transfiere la respuesta del backend a la respuesta del método automáticamente. No es necesario configurar la respuesta del método de API. Sin embargo, con la integración proxy de Lambda, la función de Lambda debe devolver un resultado de este formato de salida para que API Gateway asigne correctamente la respuesta de integración a una respuesta de método.
Mediante programación, la configuración de la respuesta de método equivale a crear un recurso MethodResponse de API Gateway y a establecer las propiedades de statusCode, responseParameters y responseModels.
Al establecer códigos de estado para un método de API, debe elegir uno como predeterminado para gestionar cualquier respuesta de integración de un código de estado no previsto. Es razonable establecer 500
como predeterminado, ya que esto equivale a emitir respuestas que de otro modo no estarían asignadas como un error del servidor. Por motivos de instrucción, la consola de API Gateway establece la respuesta 200
como la opción predeterminada. Pero puede restablecerla en la respuesta 500
.
Para configurar una respuesta de método, debe haber creado la solicitud de método.
Configurar el código de estado de la respuesta de método
El código de estado de una respuesta de método define un tipo de respuesta. Por ejemplo, las respuestas de 200, 400 y 500 indican respuestas de éxito, de error del lado del cliente y de error del lado del servidor, respectivamente.
Para configurar un código de estado de respuesta de método, establezca la propiedad statusCode
en un código de estado HTTP. El siguiente comando de la AWS CLI crea una respuesta de método de 200
.
aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200
Configurar parámetros de respuesta de métodos
Los parámetros de respuesta de método definen qué encabezados recibe el cliente en respuesta a la solicitud de método asociado. Los parámetros de respuesta también especifican un objetivo al que API Gateway asigna un parámetro de respuesta de integración, según los mapeos prescritos en la respuesta de integración del método de la API.
Para configurar los parámetros de respuesta de método, agregue al mapa responseParameters
de MethodResponse
pares de clave-valor con el formato "{parameter-name}":"{boolean}"
. En el siguiente comando de la CLI se muestra un ejemplo de cómo configurar el encabezado my-header
.
aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false
Configurar modelos de respuesta de método
Un modelo de respuesta de método define un formato del cuerpo de la respuesta del método. Es necesario configurar un modelo de respuesta de método al generar un SDK con establecimiento inflexible de tipos para la API. Garantiza que el resultado se emite en una clase apropiada en Java u Objective-C. En otros casos, la configuración de un modelo es opcional.
Antes de configurar el modelo de respuesta, primero debe crear el modelo en API Gateway. Para ello, puede llamar al comando create-model
. El siguiente ejemplo muestra cómo crear un modelo PetStorePet
para describir el cuerpo de la respuesta para la solicitud de método GET /pets/{petId}
.
aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'
El resultado se crea como un recurso Model
de API Gateway.
Para configurar los modelos de respuesta de método para definir el formato de la carga, agregue el par de clave-valor "application/json":"PetStorePet" al mapa requestModels
del recurso MethodResponse
. El siguiente comando de la AWS CLI de put-method-response
muestra cómo se realiza:
aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false \ --response-models '{"application/json":"PetStorePet"}'