Configuración de transformaciones de datos para las API de WebSocket - Amazon API Gateway

Configuración de transformaciones de datos para las API de WebSocket

En API Gateway, una solicitud de método de API de WebSocket puede aceptar una carga en un formato diferente del de la carga de la solicitud de integración, según requiera el backend. Del mismo modo, el backend puede devolver una carga de respuesta de integración diferente de la carga de respuesta del método que espera el frontend.

API Gateway le permite utilizar plantillas de mapeo para asignar la carga de una solicitud de método a la solicitud de integración correspondiente, y de una respuesta de integración a la respuesta del método correspondiente. Especifique una expresión de selección de plantilla para determinar qué plantilla se utilizará para realizar las transformaciones de datos necesarias.

Puede utilizar asignaciones de datos para asignar datos de una solicitud de ruta a una integración con backend. Para obtener más información, consulte Configuración de asignación de datos para las API de WebSocket.

Plantillas y modelos de asignación

Una plantilla de asignación es un script expresado en Velocity Template Language (VTL) que se aplica a la carga mediante expresiones JSONPath. Para obtener más información acerca de las plantillas de mapeo de API Gateway, consulte Comprensión de las plantillas de mapeo.

La carga puede tener un modelo de datos de acuerdo con el esquema JSON, borrador 4. No tiene que definir un modelo para crear una plantilla de asignación. Sin embargo, un modelo puede ayudarle a crear una plantilla porque API Gateway genera un esquema de plantilla basado en un modelo proporcionado. Para obtener más información acerca de los modelos de API Gateway, consulte Comprensión de los modelos de datos.

Expresiones de selección de plantilla

Para transformar una carga con una plantilla de mapeo, especifique una expresión de selección de plantilla de API de WebSocket en una solicitud de integración o respuesta de integración. Esta expresión se evalúa para determinar la plantilla de entrada o de salida (si procede) que se va a utilizar para transformar ya sea el cuerpo de la solicitud en el cuerpo de la solicitud de integración (a través de una plantilla de entrada) o el cuerpo de la respuesta de integración en el cuerpo de la respuesta de ruta (a través de una plantilla de salida).

Integration.TemplateSelectionExpression admite ${request.body.jsonPath} y valores estáticos.

IntegrationResponse.TemplateSelectionExpression admite ${request.body.jsonPath}, ${integration.response.statuscode}, ${integration.response.header.headerName}, ${integration.response.multivalueheader.headerName} y valores estáticos.

Expresiones de selección de respuesta de integración

Al configurar una respuesta de integración para una API de WebSocket, puede especificar si lo desea una expresión de selección de respuesta de integración. Esta expresión determina qué valor de IntegrationResponse debe seleccionarse cuando regresa una integración. El valor de esta expresión se encuentra actualmente restringido por API Gateway, tal y como se define a continuación. Tenga en cuenta que esta expresión solo se aplica a las integraciones que no sean de proxy; una integración de proxy simplemente transfiere la carga de respuesta de vuelta al intermediario sin realizar ningún modelado ni modificación.

A diferencia del resto de expresiones de selección precedentes, actualmente esta expresión admite un formato de coincidencia de patrones. La expresión debe encerrarse entre barras inclinadas.

Actualmente, el valor es fijo en función de la propiedad integrationType:

  • Para integraciones basadas en Lambda, es $integration.response.body.errorMessage.

  • En las integraciones HTTP y MOCK, es $integration.response.statuscode.

  • En HTTP_PROXY y AWS_PROXY, la expresión no se utiliza, ya que se está solicitando que la carga pase hacia el intermediario.