Expresiones de selección de WebSocket
API Gateway utiliza expresiones de selección como forma de evaluar el contexto de solicitud y respuesta y producir una clave. La clave se utiliza para seleccionar un valor de un conjunto de valores posibles, normalmente proporcionados por el desarrollador de la API. El conjunto exacto de variables admitidas variará en función de la expresión dada. A continuación se describe con más detalle cada expresión.
En todas las expresiones, el lenguaje sigue el mismo conjunto de reglas:
-
Las variables tienen el prefijo
"$"
. -
Se pueden utilizar llaves para definir explícitamente los límites de las variables, por ejempl.,
"${request.body.version}-beta"
. -
Se admite el uso de varias variables, pero la evaluación solo se produce una vez (sin evaluación recursiva).
-
A los signos de dólar (
$
) se les puede aplicar una secuencia de escape con"\"
. Esto resulta muy útil al definir una expresión que se asigna a la clave$default
reservada, como, por ejemplo,"\$default"
. -
En algunos casos, se requiere un patrón de formato. En este caso, la expresión debe encerrarse entre barras inclinadas (
"/"
), por ejemplo"/2\d\d/"
, para que coincida con los códigos de estado2
.XX
Temas
Expresiones de selección de respuesta de ruta
Las respuestas de ruta se utilizan para modelar una respuesta desde el backend al cliente. En la API de WebSocket, la respuesta de ruta es opcional. Si se define, indica a API Gateway que debe devolver una respuesta a un cliente al recibir un mensaje de WebSocket.
La evaluación de la expresión de selección de respuesta de ruta produce una clave de respuesta de ruta. Con el tiempo, esta clave se utilizará para elegir una de las respuestas RouteResponses
asociadas a la API. Sin embargo, actualmente solo se admite la clave $default
.
Expresiones de selección de clave de API
Esta expresión se evalúa cuando el servicio determina que la solicitud dada debe continuar solo si el cliente proporciona una clave de API válida.
Actualmente, los únicos dos valores admitidos son $request.header.x-api-key
y $context.authorizer.usageIdentifierKey
.
Expresiones de selección de asignación de API
Esta expresión se evalúa para determinar qué etapa de API está seleccionada cuando se realiza una solicitud mediante un dominio personalizado.
Actualmente el único valor admitido es $request.basepath
.
Resumen de expresiones de selección de WebSocket
En la tabla siguiente, se resumen los casos de uso de las expresiones de selección en las API de WebSocket:
Expresión de selección | Se evalúa como la clave para | Notas | Ejemplo de caso de uso |
---|---|---|---|
Api.RouteSelectionExpression |
Route.RouteKey |
$default se admite como una ruta catch-all. |
Direccionar los mensajes de WebSocket en función del contexto de una solicitud de cliente. |
Route.ModelSelectionExpression |
Clave para Route.RequestModels |
Opcional. Si se proporciona para una integración que no sea de proxy, se produce la validación del modelo.
|
Realizar la validación de solicitudes de forma dinámica dentro de la misma ruta. |
Integration.TemplateSelectionExpression |
Clave para Integration.RequestTemplates |
Opcional. Se puede proporcionar para la integración que no sea de proxy con el fin de manipular las cargas entrantes.
|
Manipular la solicitud del intermediario en función de las propiedades dinámicas de la solicitud. |
Integration.IntegrationResponseSelectionExpression |
IntegrationResponse.IntegrationResponseKey |
Opcional. Se puede proporcionar para una integración que no sea de proxy. Actúa como una coincidencia de patrones para los mensajes de error (de Lambda) o los códigos de estado (de las integraciones HTTP).
|
Manipular la respuesta del backend. Elegir la acción que debe realizarse en función de la respuesta dinámica del backend (por ejemplo, controlar de forma inequívoca determinados errores). |
IntegrationResponse.TemplateSelectionExpression |
Clave para IntegrationResponse.ResponseTemplates |
Opcional. Se puede proporcionar para una integración que no sea de proxy. Se admite $default. |
En algunos casos, una propiedad dinámica de la respuesta puede dictar la necesidad de transformaciones diferentes dentro de la misma ruta y la integración asociada.
|
Route.RouteResponseSelectionExpression |
RouteResponse.RouteResponseKey |
Debe proporcionarse para iniciar la comunicación bidireccional en una ruta de WebSocket. Actualmente, este valor está restringido únicamente a |
|
RouteResponse.ModelSelectionExpression |
Clave para RouteResponse.RequestModels |
No se admite actualmente. |