

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# WebSocket espressioni di selezione
<a name="apigateway-websocket-api-selection-expressions"></a>

API Gateway usa espressioni di selezione per valutare il contesto delle richieste e delle risposte e produrre una chiave. La chiave viene quindi utilizzata per selezionare da un set di valori possibili, in genere fornito da te, lo sviluppatore dell'API. L'esatto set di variabili supportate varierà a seconda del tipo di espressione. Ogni espressione viene descritta in modo dettagliato di seguito.

Per tutte le espressioni, il linguaggio segue lo stesso set di regole:
+ Una variabile ha il prefisso `"$"`.
+ Le parentesi graffe possono essere utilizzate per definire i limiti delle variabili in modo esplicito, ad esemp., `"${request.body.version}-beta"`.
+ Sono supportate numerose variabili, ma la valutazione viene eseguita una sola volta (non esiste la valutazione ricorsiva).
+ Il segno di dollaro (`$`) può essere preceduto dal carattere di escape `"\"`. Questa prassi è molto utile quando si definisce un'espressione associata alla chiave riservata `$default`, ad esempio `"\$default"`.
+ In alcuni casi, un formato di modello è obbligatorio. In questo caso, l'espressione deve essere racchiusa tra barre (`"/"`), ad esempio `"/2\d\d/"` per corrispondere ai codici di stato `2XX`.

**Topics**
+ [Espressioni di selezione della risposta di instradamento](#apigateway-websocket-api-route-response-selection-expressions)
+ [Espressioni di selezione della chiave API](#apigateway-websocket-api-apikey-selection-expressions)
+ [Espressioni di selezione della mappatura dell'API](#apigateway-websocket-api-mapping-selection-expressions)
+ [WebSocket riepilogo delle espressioni di selezione](#apigateway-websocket-api-selection-expression-table)

## Espressioni di selezione della risposta di instradamento
<a name="apigateway-websocket-api-route-response-selection-expressions"></a>

Una [risposta di instradamento](apigateway-websocket-api-route-response.md) viene utilizzata per modellare una risposta dal back-end al client. Infatti WebSocket APIs, una risposta di percorso è facoltativa. Una volta definito, segnala ad API Gateway che deve restituire una risposta a un client dopo aver ricevuto un WebSocket messaggio.

La valutazione dell'*espressione di selezione della risposta di instradamento* produce una chiave di risposta di instradamento. Infine, la chiave viene utilizzata per scegliere tra una delle [https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes-routeid-routeresponses.html](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes-routeid-routeresponses.html) associate all'API. Tuttavia, al momento è supportata solo la chiave `$default`.

## Espressioni di selezione della chiave API
<a name="apigateway-websocket-api-apikey-selection-expressions"></a>

Questa espressione viene valutata quando il servizio stabilisce che la richiesta specifica deve procedere solo se il client fornisce una [chiave API](api-gateway-basic-concept.md#apigateway-definition-api-key) valida.

Attualmente, i soli due valori supportati sono `$request.header.x-api-key` e `$context.authorizer.usageIdentifierKey`.

## Espressioni di selezione della mappatura dell'API
<a name="apigateway-websocket-api-mapping-selection-expressions"></a>

Questa espressione viene valutata per determinare quale fase API viene selezionata quando viene effettuata una richiesta utilizzando un dominio personalizzato.

Attualmente, l'unico valore supportato è `$request.basepath`.

## WebSocket riepilogo delle espressioni di selezione
<a name="apigateway-websocket-api-selection-expression-table"></a>

La tabella seguente riassume i casi d'uso delle espressioni di selezione in WebSocket APIs:


| Espressione di selezione | Restituisce la chiave per | Note | Esempio di caso d'uso | 
| --- | --- | --- | --- | 
| Api.RouteSelectionExpression | Route.RouteKey | \$1defaultLa chiave è supportata come instradamento catch-all. |  WebSocket Indirizza i messaggi in base al contesto della richiesta di un client. | 
| Route.ModelSelectionExpression | Chiave per Route.RequestModels | Facoltativo. Se fornita per un'integrazione non proxy, viene effettuata la convalida del modello. `$default`La chiave è supportata come catch-all.  | Convalida dinamica della richiesta all'interno dello stesso instradamento. | 
| Integration.TemplateSelectionExpression | Chiave per Integration.RequestTemplates |  Facoltativo. Può essere fornita per un'integrazione non proxy allo scopo di manipolare i payload in entrata. `${request.body.jsonPath}`Sono supportati e valori statici. `$default`La chiave è supportata come catch-all.  | Manipolazione della richiesta dell'intermediario in base alle proprietà dinamiche della richiesta. | 
| Integration.IntegrationResponseSelectionExpression | IntegrationResponse.IntegrationResponseKey |  Facoltativo. Può essere fornita per un'integrazione non proxy. Agisce da corrispondenza di modello per i messaggi di errore (da Lambda) o i codici di stato (da integrazioni HTTP). `$default`È necessaria la chiave per far sì che le integrazioni non proxy agiscano da catch-all per le risposte con esito positivo.  |  Manipolazione della risposta del back-end. Scegliere l'azione da eseguire in base alla risposta dinamica del back-end, ad esempio la gestione distinta di determinati errori.  | 
| IntegrationResponse.TemplateSelectionExpression | Chiave per IntegrationResponse.ResponseTemplates | Facoltativo. Può essere fornita per un'integrazione non proxy. La chiave \$1default è supportata.  |  In alcuni casi, una proprietà dinamica della risposta potrebbe imporre trasformazioni differenti all'interno dello stesso instradamento e dell'integrazione associata. `${request.body.jsonPath}`, `${integration.response.statuscode}`, `${integration.response.header.headerName}`, `${integration.response.multivalueheader.headerName}`, Sono supportati , , , e valori statici. `$default`La chiave è supportata come catch-all.  | 
| Route.RouteResponseSelectionExpression | RouteResponse.RouteResponseKey |  Dovrebbero essere forniti per avviare una comunicazione bidirezionale per un WebSocket percorso. Attualmente, questo valore è limitato solo a `$default`.  |  | 
| RouteResponse.ModelSelectionExpression | Chiave per RouteResponse.RequestModels | Attualmente non è supportata. |  | 