

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

# Trasformazione delle richieste e delle risposte API per API HTTP in Gateway API
<a name="http-api-parameter-mapping"></a>

È possibile modificare le richieste API dai client prima che raggiungano le integrazioni back-end. È inoltre possibile modificare la risposta dalle integrazioni prima che API Gateway restituisca la risposta ai client. È possibile utilizzare *la mappatura dei parametri* per modificare le richieste e le risposte API per le API HTTP. Per utilizzare la mappatura dei parametri, specificare i parametri di richiesta o risposta API da modificare e la modalità per modificare tali parametri.



## Trasformazione delle richieste API
<a name="http-api-mapping-request-parameters"></a>

È possibile utilizzare i parametri di richiesta per modificare le richieste prima che raggiungano le integrazioni back-end. È possibile modificare le intestazioni, le stringhe di query o il percorso della richiesta.

I parametri di richiesta sono una mappa chiave-valore. La chiave identificherà la posizione del parametro di richiesta da modificare e la modalità per modificarlo. Il valore specifica i nuovi dati per il parametro.

Nella tabella seguente sono illustrate le chiavi supportate.


| Tipo | Sintassi | 
| --- | --- | 
| Intestazione | append\$1overwrite\$1remove:header.headername | 
| Stringa di query | append\$1overwrite\$1remove:querystring.querystring-name | 
| Percorso | overwrite:path | 

Nella tabella seguente sono illustrati i valori supportati che è possibile mappare ai parametri.


| Tipo | Sintassi | Note | 
| --- | --- | --- | 
| Valore intestazione | \$1request.header.name o \$1\$1request.header.name\$1 | I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole. API Gateway combina più valori di intestazione con virgole, ad esempio "header1": "value1,value2". Alcune intestazioni sono riservate. Per ulteriori informazioni, consulta [Intestazioni riservate](#http-api-mapping-reserved-headers). | 
| Valore della stringa di query | \$1request.querystring.name o \$1\$1request.querystring.name\$1 | I nomi delle stringhe di query fanno distinzione tra maiuscole e minuscole. API Gateway combina più valori con virgole, ad esempio "querystring1" "Value1,Value2". | 
| Corpo della richiesta | \$1request.body.name o \$1\$1request.body.name\$1 | Un'espressione di percorso JSON. Le espressioni di discesa ricorsiva (\$1request.body..name)) e di filtro (?(expression)) non sono supportate.  Quando si specifica un percorso JSON, API Gateway tronca il corpo della richiesta a 100 KB e quindi applica l'espressione di selezione. Per inviare payload superiori a 100 KB, specificare `$request.body`.   | 
| Percorso della richiesta | \$1request.path o \$1\$1request.path\$1 | Il percorso della richiesta, senza il nome della fase. | 
| Parametro del percorso | \$1request.path.name o \$1\$1request.path.name\$1 | Il valore di un parametro del percorso nella richiesta. Ad esempio, se l'instradamento è /pets/\$1petId\$1, è possibile mappare il parametro petId della richiesta con \$1request.path.petId. | 
| Variabile di contesto | \$1context.variableName o \$1\$1context.variableName\$1 | Il valore di una [variabile di contesto](http-api-logging-variables.md). Sono supportati solo i caratteri speciali `.` e `_`. | 
| Variabile di fase | \$1stageVariables.variableName o \$1\$1stageVariables.variableName\$1 | Il valore di una [variabile di fase](http-api-stages.stage-variables.md). | 
| Valore statico | stringa | Un valore costante. | 

**Nota**  
Per utilizzare più variabili in un'espressione di selezione, racchiudere la variabile tra parentesi. Ad esempio, `${request.path.name} ${request.path.id}`.

## Trasformazione delle risposte API
<a name="http-api-mapping-response-parameters"></a>

È possibile utilizzare i parametri di risposta per trasformare la risposta HTTP da un'integrazione back-end prima di restituire la risposta ai client. È possibile modificare le intestazioni o il codice di stato di una risposta prima che Gateway API restituisca la risposta ai client.

Configurare i parametri di risposta per ogni codice di stato restituito dall'integrazione. I parametri di risposta sono una mappa chiave-valore. La chiave identificherà la posizione del parametro di richiesta da modificare e la modalità per modificarlo. Il valore specifica i nuovi dati per il parametro.

Nella tabella seguente sono illustrate le chiavi supportate.


| Tipo | Sintassi | 
| --- | --- | 
| Intestazione | append\$1overwrite\$1remove:header.headername | 
| Codice di stato | overwrite:statuscode | 

Nella tabella seguente sono illustrati i valori supportati che è possibile mappare ai parametri.


| Tipo | Sintassi | Note | 
| --- | --- | --- | 
| Valore intestazione | \$1response.header.name o \$1\$1response.header.name\$1 | I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole. API Gateway combina più valori di intestazione con virgole, ad esempio "header1": "value1,value2". Alcune intestazioni sono riservate. Per ulteriori informazioni, consulta [Intestazioni riservate](#http-api-mapping-reserved-headers). | 
| Corpo di risposta | \$1response.body.name o \$1\$1response.body.name\$1 | Un'espressione di percorso JSON. Le espressioni di discesa ricorsiva (\$1response.body..name) e di filtro (?(expression)) non sono supportate.  Quando si specifica un percorso JSON, API Gateway tronca il corpo della risposta a 100 KB e quindi applica l'espressione di selezione. Per inviare payload superiori a 100 KB, specificare `$response.body`.   | 
| Variabile di contesto | \$1context.variableName o \$1\$1context.variableName\$1 | Valore di una [variabile di contesto](http-api-logging-variables.md) supportata. | 
| Variabile di fase | \$1stageVariables.variableName o \$1\$1stageVariables.variableName\$1 | Il valore di una [variabile di fase](http-api-stages.stage-variables.md). | 
| Valore statico | stringa | Un valore costante. | 

**Nota**  
Per utilizzare più variabili in un'espressione di selezione, racchiudere la variabile tra parentesi. Ad esempio, `${request.path.name} ${request.path.id}`.

## Intestazioni riservate
<a name="http-api-mapping-reserved-headers"></a>

Le intestazioni seguenti sono riservate. Per queste intestazioni, non è possibile configurare le mappature di richiesta o di risposta.
+ access-control-\$1
+ apigw-\$1
+ Autorizzazione
+ Connessione
+ Content-Encoding
+ Content-Length
+ Content-Location
+ Forwarded
+ Keep-Alive
+ Origin
+ Proxy-Authenticate
+ Proxy-Authorization
+ TE
+ Trailers 
+ Transfer-Encoding
+ Upgrade
+ x-amz-\$1
+ x-amzn-\$1
+ X-Forwarded-For
+ X-Forwarded-Host
+ X-Forwarded-Proto
+ Via

## Esempi
<a name="http-api-parameter-mapping-examples"></a>

Gli esempi della AWS CLI seguenti configurano le mappature dei parametri. Per modelli di esempio CloudFormation, vedi [GitHub](https://github.com/awsdocs/amazon-api-gateway-developer-guide/tree/main/cloudformation-templates).

### Aggiungere un'intestazione a una richiesta API
<a name="http-api-parameter-mapping-examples-request-header"></a>

Il comando [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) seguente crea un’intestazione denominata `header1` per una richiesta API prima che raggiunga l’integrazione del backend. API Gateway popola l'intestazione con l'ID di richiesta.

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --request-parameters '{ "append:header.header1": "$context.requestId" }'
```

### Rinominare un'intestazione di richiesta
<a name="http-api-parameter-mapping-examples-response"></a>

Il comando [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) seguente rinomina l’intestazione di una richiesta da `header1` a `header2`:

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --request-parameters '{ "append:header.header2": "$request.header.header1",  "remove:header.header1": "''"}'
```

### Modificare la risposta da un'integrazione
<a name="http-api-parameter-mapping-examples-response"></a>

Il comando [create-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) seguente configura i parametri di risposta per un’integrazione. Quando le integrazioni restituiscono un codice di stato 500, API Gateway modifica il codice di stato in 403 e aggiunge `header1`1 alla risposta. Quando l'integrazione restituisce un codice di stato 404, API Gateway aggiunge un'intestazione `error` alla risposta.

```
aws apigatewayv2 create-integration \
    --api-id abcdef123 \
    --integration-type HTTP_PROXY \
    --payload-format-version 1.0 \
    --integration-uri 'https://api.example.com' \
    --integration-method ANY \
    --response-parameters '{"500" : {"append:header.header1": "$context.requestId", "overwrite:statuscode" : "403"}, "404" : {"append:header.error" : "$stageVariables.environmentId"}  }'
```

### Rimuovere le mappature dei parametri configurati
<a name="http-api-parameter-mapping-examples-remove"></a>

Il comando [update-integration](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-integration.html) seguente rimuove i parametri di richiesta configurati in precedenza per `append:header.header1`. Il comando rimuove anche i parametri di risposta configurati in precedenza per un codice di stato 200.

```
aws apigatewayv2 update-integration \
    --api-id abcdef123 \
    --integration-id hijk456 \
    --request-parameters '{"append:header.header1" : ""}' \
    --response-parameters '{"200" : {}}'
```