Transformações de dados para APIs de WebSocket no API Gateway - Amazon API Gateway

Transformações de dados para APIs de WebSocket no API Gateway

No API Gateway, a solicitação de método de uma API WebSocket pode usar uma carga em um formato diferente da carga da solicitação de integração correspondente, conforme exigido no backend. De maneira semelhante, o backend pode retornar uma carga de resposta de integração diferente da carga da resposta do método, conforme esperado pelo front-end.

O API Gateway permite usar modelos de mapeamento para mapear a carga de uma solicitação de método para a solicitação de integração correspondente ou de uma resposta de integração para a resposta de método correspondente. Você especifica uma expressão de seleção de modelo para determinar qual modelo usar para executar as transformações de dados necessárias.

É possível usar mapeamentos de dados para mapear dados de uma solicitação de rota para uma integração de backend. Para saber mais, consulte Configurar o mapeamento de dados para APIs de WebSocket.

Modelos e modelos de mapeamento

Um modelo de mapeamento é um script expresso em Velocity Template Language (VTL) e aplicado à carga usando expressões JSONPath. Para obter mais informações sobre modelos de mapeamento do API Gateway, consulte Modelos de mapeamento para APIs REST.

A carga pode ter um modelo de dados de acordo com o esquema JSON rascunho 4. Não é necessário definir um modelo para criar um modelo de mapeamento. No entanto, um modelo pode ajudar você a criar um modelo, porque o API Gateway gera um esquema de modelo com base em um modelo fornecido. Para obter mais informações sobre modelos do API Gateway, consulte Modelos de dados para APIs REST.

Expressões de seleção de modelo

Para transformar uma carga com um modelo de mapeamento, especifique uma expressão de seleção de modelo de API WebSocket em uma solicitação de integração ou resposta de integração. Esta expressão é avaliada para determinar o modelo de entrada ou de saída (se houver) a ser utilizado para transformar o corpo da solicitação no corpo da solicitação de integração (por meio de um modelo de entrada) ou o corpo da resposta de integração para o corpo de resposta de rotas (por meio de um modelo de saída).

Integration.TemplateSelectionExpression oferece suporte a ${request.body.jsonPath} e valores estáticos.

IntegrationResponse.TemplateSelectionExpression oferece suporte a ${request.body.jsonPath}, ${integration.response.statuscode}, ${integration.response.header.headerName}, ${integration.response.multivalueheader.headerName} e a valores estáticos.

Expressões de seleção de resposta da integração

Quando você define uma resposta de integração para uma API WebSocket, é possível especificar opcionalmente uma expressão de seleção de resposta da integração. Esta expressão determina qual IntegrationResponse deve ser selecionada quando uma integração retorna. O valor dessa expressão é atualmente restrito pelo API Gateway, conforme definido abaixo. Observe que essa expressão só é relevante para integrações não proxy; uma integração de proxy simplesmente transmitirá a carga da resposta de volta para o autor da chamada sem modelagem ou modificação.

Ao contrário de outras expressões de seleção anteriores, essa expressão é atualmente compatível com um formato de padrão correspondente. A expressão deve ser encapsulada com barras.

Atualmente, o valor é corrigido dependendo do integrationType:

  • Para integrações baseadas em Lambda, é $integration.response.body.errorMessage.

  • Para integrações HTTP e MOCK, é $integration.response.statuscode.

  • Para HTTP_PROXY e AWS_PROXY, a expressão não é utilizada porque você está solicitando que a carga seja transmitida para o autor da chamada.