Configuración de mapeo de datos de solicitud y respuesta mediante la consola de API Gateway
Para utilizar la consola de API Gateway para definir la solicitud o respuesta de integración de la API, siga estas instrucciones.
nota
Estas instrucciones presuponen que ya ha completado los pasos que se detallan en Configuración de una solicitud de integración de la API mediante la consola de API Gateway.
-
En el panel de Recursos, elija el método.
-
En la pestaña Solicitud de integración, en Configuración de la solicitud de integración, seleccione Editar.
-
Seleccione una opción para Acceso directo de cuerpo de la solicitud para configurar de qué manera el cuerpo de la solicitud del método de un tipo de contenido no mapeado pasará por la solicitud de integración sin sufrir ninguna transformación a la función de Lambda, el proxy de HTTP o el proxy de servicio de AWS. Hay tres opciones:
-
Elija Cuando ninguna plantilla coincida con el encabezado Content-Type de la solicitud si desea que el cuerpo de la solicitud de método se pase a través de la solicitud de integración al backend sin transformación cuando el tipo de contenido de la solicitud de método no coincida con ninguno de los tipos de contenido asociados a las plantillas de mapeo, tal y como se define en el siguiente paso.
nota
Al llamar a la API de API Gateway, se elige esta opción estableciendo
WHEN_NO_MATCH
como el valor de la propiedadpassthroughBehavior
en el recurso Integration. -
Elija When there are no templates defined (recommended) (Cuando no haya ninguna plantilla definida [Recomendado]) si desea que el cuerpo de la solicitud del método se pase a la solicitud de integración en el backend sin transformación cuando no se haya definido ninguna plantilla de asignación en la solicitud de integración. Si se define una plantilla cuando esta opción está seleccionada, la solicitud de método de un tipo de contenido sin asignar se rechazará con una respuesta HTTP 415 Unsupported Media Type.
nota
Al llamar a la API de API Gateway, se elige esta opción estableciendo
WHEN_NO_TEMPLATE
como el valor de la propiedadpassthroughBehavior
en el recurso Integration. -
Elija Never (Nunca) si no desea que la solicitud del método se pase cuando su tipo de contenido no coincida con ningún tipo de contenido asociado a las plantillas de asignación definidas en la solicitud de integración o no se haya definido ninguna plantilla de asignación en la solicitud de integración. La solicitud del método de un tipo de contenido sin asignar se rechazará con una respuesta HTTP 415 Unsupported Media Type.
nota
Al llamar a la API de API Gateway, se elige esta opción estableciendo
NEVER
como el valor de la propiedadpassthroughBehavior
en el recurso Integration.
Para obtener más información sobre los comportamientos de paso a través de la integración, consulte Comportamientos del acceso directo a la integración.
-
-
Para un proxy HTTP o un servicio de proxy de AWS, para asociar un parámetro de ruta, un parámetro de cadena de consulta o un parámetro de encabezado definido en la solicitud de integración con un parámetro de ruta, parámetro de cadena de consulta o parámetro de encabezado correspondientes en la solicitud del método del proxy HTTP o proxy de servicio AWS, haga lo siguiente:
-
Elija Parámetros de ruta de URL, Parámetros de cadena de consulta URL o Encabezados de solicitudes HTTP, respectivamente, y después elija Agregar ruta, Agregar cadena de consulta o Agregar encabezado, respectivamente.
-
En Name (Nombre), escriba el nombre del parámetro de ruta, parámetro de cadena de consulta o parámetro de encabezado en el proxy HTTP o proxy de servicio de AWS.
-
En Mapeado de, escriba el valor de mapeado del parámetro de ruta, parámetro de cadena de consulta o parámetro de encabezado. Utilice uno de los siguientes formatos:
-
method.request.path.
para un parámetro de ruta denominadoparameter-name
parameter-name
tal como se define en la página Solicitud de método. -
method.request.querystring.
para un parámetro de cadena de consulta denominadoparameter-name
parameter-name
tal como se define en la página Solicitud de método. -
method.request.multivaluequerystring.
para un parámetro de cadena de consulta de varios valores denominadoparameter-name
parameter-name
tal como se define en la página Solicitud de método. -
method.request.header.
para un parámetro de encabezado denominadoparameter-name
parameter-name
tal como se define en la página Solicitud de método.También puede establecer un valor de cadena literal (incluida entre un par de comillas simples) en un encabezado de integración.
-
method.request.multivalueheader.
para un parámetro de encabezado de varios valores denominadoparameter-name
parameter-name
tal como se define en la página Solicitud de método.
-
-
Para añadir otro parámetro, elija el botón Añadir.
-
-
Para añadir una plantilla de mapeo, elija Plantillas de mapeo.
-
Para definir una plantilla de mapeo para una solicitud de entrada, elija Añadir plantilla de mapeo. En Tipo de contenido, introduzca un tipo de contenido (por ejemplo,
application/json
). A continuación, ingrese la plantilla de asignación. Para obtener más información, consulte Plantillas de asignación para las API de REST. Elija Save (Guardar).
-
Puede mapear una respuesta de integración desde el backend a una respuesta de método de la API devuelta a la aplicación que realiza la llamada. Esto incluye devolver los encabezados de respuesta seleccionados del cliente desde los encabezados disponibles en el backend, transformando el formato de datos de la carga de respuesta del backend en un formato especificado por la API. Puede especificar este tipo de mapeo configurando Respuesta de método y Respuestas de integración.
Para que el método reciba un formato de datos de respuesta personalizado basado en el código de estado HTTP devuelto por la función de Lambda, el proxy HTTP o el proxy del servicio AWS, haga lo siguiente:
-
Elija Respuestas de integración. Elija Editar en Predeterminado: respuesta, para especificar la configuración para un código de respuesta HTTP 200 del método, o elija Crear respuesta para especificar la configuración para cualquier otro código de estado de respuesta HTTP del método.
-
En Expresión regular de error Lambda (para una función de Lambda) o Expresión regular de estado HTTP (para un proxy de HTTP o un proxy de servicio de AWS), escriba una expresión regular para especificar qué cadenas de error de la función de Lambda (para una función de Lambda) o qué códigos de estado de respuesta HTTP (para un proxy de HTTP o un proxy de servicio de AWS) mapear a este mapeo de salida. Por ejemplo, para asignar todos los códigos de estado HTTP 2xx desde un proxy HTTP proxy a esta asignación de salida, escriba "
2\d{2}
" en HTTP status regex (Expresión regular de estado de HTTP). Para devolver un mensaje de error que contenga "Solicitud no válida” desde una función de Lambda a una respuesta400 Bad Request
, escriba ".*Invalid request.*
" como el valor de la expresión Expresión regular de error Lambda. Por otra parte, para devolver400 Bad Request
para todos los mensajes de error no asignados desde Lambda, escriba "(\n|.)+
" en Expresión regular de error Lambda. Esta última expresión regular puede utilizarse para la respuesta de error predeterminada de una API.nota
API Gateway utiliza expresiones regulares de estilo de patrón de Java para el mapeo de respuesta. Para obtener más información, consulte Pattern (Patrón)
en la documentación de Oracle. Los patrones de error se cotejan con la cadena completa de la propiedad
errorMessage
en la respuesta de Lambda, que se rellena concallback(errorMessage)
en Node.js o conthrow new MyException(errorMessage)
en Java. Además, los caracteres incluidos en secuencias de escape se sacan de las secuencias de escape antes de que se aplique la expresión regular.Si utiliza ‘.+’ como el patrón de selección para filtrar respuestas, tenga en cuenta que es posible que esta patrón no coincida con una respuesta que contenga un carácter de nueva línea (‘\n’).
-
Si está habilitado, en Estado de respuesta de método, elija el código de estado de respuesta HTTP que definió en la página Respuesta de método.
-
En Mapeos de encabezado, para cada encabezado que haya definido para el código de estado de respuesta HTTP en la página Respuesta del método, especifique un valor de mapeo. En Mapping value (Valor de asignación), utilice uno de los siguientes formatos:
-
integration.response.multivalueheaders.
dondeheader-name
header-name
es el nombre de un encabezado de respuesta multivalor del backend.Por ejemplo, para devolver el encabezado
Date
de la respuesta del backend como el encabezadoTimestamp
de la respuesta de un método de API, la columna Response header (Encabezado de respuesta) contendrá una entrada Timestamp (Marca temporal) y la entrada Mapping value (Valor de asignación) asociada debe estar establecida en integration.response.header.multivalueheaders.Date. -
integration.response.header.
dondeheader-name
header-name
es el nombre de un encabezado de respuesta de un solo valor del backend.Por ejemplo, para devolver el encabezado
Date
de la respuesta del backend como el encabezadoTimestamp
de la respuesta de un método de API, la columna Response header (Encabezado de respuesta) contendrá una entrada Timestamp (Marca temporal) y la entrada Mapping value (Valor de asignación) asociada debe estar establecida en integration.response.header.Date.
-
-
Elija Plantillas de mapeo y, a continuación, elija Agregar plantilla de mapeo. En el cuadro Tipo de contenido, escriba el tipo de contenido de los datos que se transferirán desde la función de Lambda, el proxy de HTTP o el proxy de servicio de AWS al método. A continuación, ingrese la plantilla de asignación. Para obtener más información, consulte Plantillas de asignación para las API de REST.
-
Elija Save (Guardar).
-