Configuración de mapeo de datos de solicitud y respuesta mediante la consola de API Gateway - Amazon API Gateway

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.

  1. En el panel de Recursos, elija el método.

  2. En la pestaña Solicitud de integración, en Configuración de la solicitud de integración, seleccione Editar.

  3. 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 propiedad passthroughBehavior 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 propiedad passthroughBehavior 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 propiedad passthroughBehavior 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.

  4. 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:

    1. 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.

    2. 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.

    3. 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.parameter-name para un parámetro de ruta denominado parameter-name tal como se define en la página Solicitud de método.

      • method.request.querystring.parameter-name para un parámetro de cadena de consulta denominado parameter-name tal como se define en la página Solicitud de método.

      • method.request.multivaluequerystring.parameter-name para un parámetro de cadena de consulta de varios valores denominado parameter-name tal como se define en la página Solicitud de método.

      • method.request.header.parameter-name para un parámetro de encabezado denominado 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.parameter-name para un parámetro de encabezado de varios valores denominado parameter-name tal como se define en la página Solicitud de método.

    4. Para añadir otro parámetro, elija el botón Añadir.

  5. Para añadir una plantilla de mapeo, elija Plantillas de mapeo.

  6. 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 Comprensión de las plantillas de mapeo.

  7. Elija Save (Guardar).

  8. 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:

    1. 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.

    2. 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 respuesta 400 Bad Request, escriba ".*Invalid request.*" como el valor de la expresión Expresión regular de error Lambda. Por otra parte, para devolver 400 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 con callback(errorMessage) en Node.js o con throw 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’).

    3. 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.

    4. 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.header-name donde 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 encabezado Timestamp 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.header-name donde 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 encabezado Timestamp 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.

    5. 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 Comprensión de las plantillas de mapeo.

    6. Elija Save (Guardar).