

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

# Compressione del payload per REST APIs in API Gateway
<a name="api-gateway-gzip-compression-decompression"></a>

 API Gateway permette al client di chiamare l'API con payload compressi usando una delle [codifiche di contenuto supportate](api-gateway-enable-compression.md#api-gateway-supported-content-encodings). Per impostazione predefinita, API Gateway supporta la decompressione del payload di richiesta del metodo. È tuttavia necessario configurare l'API per abilitare la compressione del payload di risposta del metodo. 

 Per abilitare la compressione in un'[https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html), imposta la proprietà [https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#minimumCompressionSize](https://docs.aws.amazon.com/apigateway/latest/api/API_RestApi.html#minimumCompressionSize) su un valore intero non negativo compreso tra 0 e 10485760 (10 milioni di byte) quando crei l'API oppure dopo averla creata. Per disabilitare la compressione nell'API, imposta la proprietà `minimumCompressionSize` su null oppure rimuovila. È possibile abilitare o disabilitare la compressione per un'API utilizzando la console API Gateway AWS CLI, o l'API REST di API Gateway. 

Se desideri che la compressione venga applicata a payload di qualsiasi dimensione, imposta il valore di `minimumCompressionSize` su zero. La compressione di dati di piccole dimensioni può tuttavia comportare un aumento della dimensione finale dei dati. La compressione in API Gateway e la decompressione nel client possono inoltre comportare un aumento della latenza globale e richiedere tempi di elaborazione maggiori. Esegui test case sull'API per determinare un valore ottimale.

Il client può inviare una richiesta API con un payload compresso e un'intestazione `Content-Encoding` appropriata per consentire a Gateway API di decomprimere e applicare i modelli di mappatura appropriati prima di passare la richiesta all'endpoint di integrazione. Dopo che la compressione è stata abilitata e l'API distribuita, il client può ricevere una risposta API con un payload compresso se specifica un'intestazione `Accept-Encoding` appropriata nella richiesta del metodo. 

Quando l'endpoint di integrazione prevede e restituisce payload JSON non compressi, un modello di mappatura configurato per un payload JSON non compresso è applicabile al payload compresso. Per un payload di richiesta del metodo compresso, API Gateway decomprime il payload, applica il modello di mappatura e passa la richiesta mappata all'endpoint di integrazione. Per un payload di risposta di integrazione non compresso, API Gateway applica il modello di mappatura, comprime il payload mappato e restituisce il payload compresso al client. 

**Topics**
+ [Abilitazione della compressione del payload per un'API in Gateway API](api-gateway-enable-compression.md)
+ [Chiamata di un metodo API con un payload compresso in Gateway API](api-gateway-make-request-with-compressed-payload.md)
+ [Ricezione di una risposta API con un payload compresso in Gateway API](api-gateway-receive-response-with-compressed-payload.md)

# Abilitazione della compressione del payload per un'API in Gateway API
<a name="api-gateway-enable-compression"></a>

Puoi abilitare la compressione per un'API utilizzando la console API Gateway AWS CLI, o un AWS SDK.

Per un'API esistente, dopo aver abilitato la compressione, è necessario distribuire l'API per rendere effettiva la modifica. Per una nuova API, puoi distribuirla dopo aver terminato la configurazione.

**Nota**  
La codifica dei contenuti con la massima priorità deve essere supportata da API Gateway. In caso contrario, la compressione non viene applicata al payload della risposta.

**Topics**
+ [Abilitazione della compressione dei payload per un'API mediante la console API Gateway](#api-gateway-enable-compression-console)
+ [Abilita la compressione del payload per un'API utilizzando il AWS CLI](#api-gateway-enable-compression-cli)
+ [Codifiche di contenuto supportate da API Gateway](#api-gateway-supported-content-encodings)

## Abilitazione della compressione dei payload per un'API mediante la console API Gateway
<a name="api-gateway-enable-compression-console"></a>

Nella procedura seguente viene descritto come abilitare la compressione del payload per un'API. 

**Per abilitare la compressione del payload usando la console API Gateway**

1. Accedi alla console API Gateway all'indirizzo [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Seleziona un'API esistente o creane una nuova.

1. Nel riquadro di navigazione principale, scegli **Impostazioni API**. 

1. Nella sezione **Dettagli API**, scegli **Modifica**.

1. Attiva l'opzione **Codifica contenuto** per abilitare la compressione del payload. In **Dimensione corpo minima**, immetti un numero per la dimensione di compressione minima (in byte). Per disattivare la compressione, disattiva l'opzione **Codifica contenuto**.

1. Scegli **Save changes** (Salva modifiche).

## Abilita la compressione del payload per un'API utilizzando il AWS CLI
<a name="api-gateway-enable-compression-cli"></a>



Il [create-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/create-rest-api.html)comando seguente crea un'API con compressione del payload:

```
aws apigateway create-rest-api \
    --name "My test API" \
    --minimum-compression-size 0
```

Il [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)comando seguente abilita la compressione del payload per un'API esistente:

```
aws apigateway update-rest-api \
    --rest-api-id 1234567890 \
    --patch-operations op=replace,path=/minimumCompressionSize,value=0
```

La proprietà `minimumCompressionSize` ha un valore intero non negativo compreso tra 0 e 10485760 (10M byte). Misura la soglia di compressione. Se la dimensione del payload è inferiore a questo valore, la compressione o la decompressione non vengono applicate al payload. Impostando il valore su zero, la compressione viene applicata per qualsiasi dimensione di payload.

Il [update-rest-api](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-rest-api.html)comando seguente disattiva la compressione del payload:

```
aws apigateway update-rest-api \
    --rest-api-id 1234567890 \
    --patch-operations op=replace,path=/minimumCompressionSize,value=
```

È anche possibile impostare `value` su una stringa vuota `""` o omettere completamente la proprietà `value` nella chiamata precedente.

## Codifiche di contenuto supportate da API Gateway
<a name="api-gateway-supported-content-encodings"></a>

API Gateway supporta le codifiche di contenuto seguenti:
+ `deflate`
+ `gzip`
+ `identity`

API Gateway supporta anche il formato di intestazione `Accept-Encoding` seguente, in base alla specifica [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.4):
+ `Accept-Encoding:deflate,gzip`
+ `Accept-Encoding:`
+ `Accept-Encoding:*`
+ `Accept-Encoding:deflate;q=0.5,gzip;q=1.0`
+ `Accept-Encoding:gzip;q=1.0,identity;q=0.5,*;q=0`

# Chiamata di un metodo API con un payload compresso in Gateway API
<a name="api-gateway-make-request-with-compressed-payload"></a>

Per effettuare una richiesta API con un payload compresso, il client deve impostare l'intestazione `Content-Encoding` con una delle [codifiche di contenuto supportate](api-gateway-enable-compression.md#api-gateway-supported-content-encodings). 

Supponiamo che tu sia un client API e desideri chiamare il metodo PetStore API (`POST /pets`). Il metodo non deve essere chiamato usando l'output JSON seguente:

```
POST /pets
Host: {petstore-api-id}.execute-api.{region}.amazonaws.com
Content-Length: ...

{
  "type": "dog",
  "price": 249.99
}
```

Deve invece essere chiamato con lo stesso payload compresso usando la codifica GZIP:

```
POST /pets
Host: {petstore-api-id}.execute-api.{region}.amazonaws.com
Content-Encoding:gzip
Content-Length: ...

���RPP*�,HU�RPJ�OW��e&���L,�,-y�j
```

Quando API Gateway riceve la richiesta, verifica se la codifica di contenuto specificata è supportata. Tenta quindi di decomprimere il payload con la codifica di contenuto specificata. Se la decompressione ha esito positivo, la richiesta viene inviata all'endpoint di integrazione. Se la codifica specificata non è supportata oppure se il payload fornito non è compresso con la codifica specificata, API Gateway restituisce la risposta di errore `415 Unsupported Media Type`. L'errore non viene registrato in CloudWatch Logs, se si verifica nella fase iniziale della decompressione prima che l'API e la fase vengano identificate. 

# Ricezione di una risposta API con un payload compresso in Gateway API
<a name="api-gateway-receive-response-with-compressed-payload"></a>

Quando effettua una richiesta in un'API abilitata per la compressione, il client può scegliere di ricevere un payload di risposta compresso con un determinato formato specificando un'intestazione `Accept-Encoding` con una [codifica di contenuto supportata](api-gateway-enable-compression.md#api-gateway-supported-content-encodings). 

API Gateway comprime il payload di risposta solo quando vengono soddisfatte le condizioni seguenti:
+  La richiesta in ingresso ha l'intestazione `Accept-Encoding` con una codifica di contenuto e un formato supportati. 
**Nota**  
Se l'intestazione non è impostata, il valore predefinito è `*`, come definito in [RFC 7231](https://datatracker.ietf.org/doc/html/rfc7231#section-5.3.4). In tal caso, API Gateway non comprime il payload. Alcuni browser o client possono aggiungere `Accept-Encoding` (ad esempio, `Accept-Encoding:gzip, deflate, br`) automaticamente alle richieste abilitate per la compressione. Ciò può attivare la compressione del payload in Gateway API. Se i valori dell'intestazione `Accept-Encoding` supportati non sono specificati in modo esplicito, API Gateway non comprime il payload. 
+  La proprietà `minimumCompressionSize` è impostata nell'API per abilitare la compressione.
+  La risposta di integrazione non ha un'intestazione `Content-Encoding`. 
+  La dimensione di un payload di risposta di integrazione, dopo l'applicazione del modello di mappatura applicabile, è maggiore o uguale al valore di `minimumCompressionSize` specificato.

API Gateway applica l'eventuale modello di mappatura configurato per la risposta di integrazione prima della compressione del payload. Se la risposta di integrazione contiene un'intestazione `Content-Encoding`, API Gateway presuppone che il payload di risposta di integrazione sia già compresso e ignora l'elaborazione della compressione.

Un esempio è l'esempio di PetStore API e la seguente richiesta:

```
GET /pets
Host: {petstore-api-id}.execute-api.{region}.amazonaws.com
Accept: application/json
```

Il back-end risponde alla richiesta con un payload JSON non compresso simile a quanto segue:

```
200 OK

[
  { 
    "id": 1, 
    "type": "dog", 
    "price": 249.99 
  }, 
  { 
    "id": 2, 
    "type": "cat", 
    "price": 124.99 
  }, 
  { 
    "id": 3, 
    "type": "fish", 
    "price": 0.99 
  } 
]
```

Per ricevere l'output come payload compresso, il client API può inviare una richiesta come illustrato di seguito:

```
GET /pets
Host: {petstore-api-id}.execute-api.{region}.amazonaws.com
Accept-Encoding:gzip
```

Il client riceve la risposta con un'intestazione `Content-Encoding` e un payload con codifica GZIP simile a quanto segue: 

```
200 OK
Content-Encoding:gzip
...

���RP�

J�)JV
�:P^IeA*������+(�L	�X�YZ�ku0L0B7!9��C#�&����Y��a���^�X
```

Quando il payload di risposta è compresso, solo la dimensione dei dati compressi viene fatturata per il trasferimento dati.