

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

# Esempi di come Gateway API valuta le regole di routing
<a name="rest-api-routing-rules-examples"></a>

La sezione seguente illustra quattro esempi di come Gateway API valuta le regole di routing e le mappature API.

## Esempio 1: solo regole di routing
<a name="rest-api-routing-rules-examples-rule-only"></a>

In questo esempio, il nome di dominio personalizzato `https://petstore.example.com` ha la modalità di routing impostata su `ROUTING_RULE_ONLY` con le regole di routing e le priorità riportate di seguito.


|  ID della regola  |  Priorità  |  Condizioni  |  Azione  | 
| --- | --- | --- | --- | 
| `abc123` |  10  |  Se la richiesta contiene l’intestazione `Hello:World`  |  API di destinazione 1  | 
| `zzz000` |  50  |  Se la richiesta contiene le intestazioni `Accept:image/webp` e `Pet:Dog-*` e se il percorso di base contiene `PetStoreShopper` |  API di destinazione 2  | 
| `efg456` |  100  | Nessuno |  API di destinazione 3  | 

La tabella seguente mostra come Gateway API applica le regole di routing precedenti alle richieste di esempio.


| Richiesta | API selezionata | Spiegazione | 
| --- | --- | --- | 
| `https://petstore.example.com -h "Hello:World"` | API di destinazione 1 | La richiesta soddisfa la regola di routing `abc123`. | 
| `https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"` | API di destinazione 1 | Gateway API valuta tutte le regole di routing in ordine di priorità. La regola di routing `abc123` ha la priorità assoluta e le condizioni sono soddisfatte, quindi Gateway API invoca API di destinazione 1.<br />Sebbene le condizioni della richiesta corrispondano anche alla regola di routing `zzz000`, Gateway API non valuta nessun’altra regola di routing dopo aver effettuato una corrispondenza. | 
| `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"` | API di destinazione 2 | La richiesta soddisfa la regola di routing `zzz000`. Questa è una corrispondenza perché la stringa `Pet:Dog-Bella` corrisponde a `Pet:Dog-*` | 
| `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"` | API di destinazione 3 | La richiesta non soddisfa la regola di routing `abc123`. La richiesta non soddisfa la regola di routing `zzz000` perché non sono presenti tutte le intestazioni necessarie. La regola di priorità successiva corrisponde a tutte le richieste in entrata, quindi Gateway API invoca API di destinazione 3. | 

## Esempio 2: regole di routing e mappature API
<a name="rest-api-routing-rules-examples-rule-and-mappings"></a>

In questo esempio, il nome di dominio personalizzato `https://petstore.diagram.example.com` ha la modalità di routing impostata su `ROUTING_RULE_THEN_API_MAPPING` e le seguenti regole di routing e mappature API.


|  ID della regola  |  Priorità  |  Condizioni  |  Azione  | 
| --- | --- | --- | --- | 
| `abc123` |  1  |  Se la richiesta contiene `pets`  |  Invoca la fase `Prod` dell’API `PetStore`.  | 
| `000zzz` |  5  |  Se la richiesta contiene l’intestazione `Cookie`:`*ux=beta*` e se il percorso di base contiene `/refunds` |  Invoca la fase `Beta` dell’API `Refunds`.  | 

La tabella riportata di seguito mostra le mappature API per `https://petstore.backup.example.com`.


|  Mappatura API  |  API selezionata  | 
| --- | --- | 
|  `/refunds`  |  Invoca la fase `Prod` dell’API `Refunds`.  | 
|  `(none)`  |  Invoca la fase `Prod` dell’API `Search`.  | 

Il diagramma seguente mostra come Gateway API applica le regole di routing e le mappature API precedenti alle richieste di esempio. Le richieste di esempio sono riepilogate nella tabella che segue il diagramma.

![Diagramma di come Gateway API applica le regole di routing e le mappature API precedenti.](http://docs.aws.amazon.com/it_it/apigateway/latest/developerguide/images/rr-diagram.png)


La tabella seguente mostra come Gateway API applica le regole di routing e le mappature API precedenti alle richieste di esempio.


| Richiesta | API selezionata | Spiegazione | 
| --- | --- | --- | 
| `https://petstore.diagram.com/pets` | La fase `Prod` dell’API `PetStore`. | La richiesta soddisfa la regola di routing `abc123`. | 
| `https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"` | La fase `Beta` dell’API `Refunds`. | La richiesta soddisfa la regola di routing `000zzz`. L’intestazione `Cookie` contiene la corrispondenza `*contains*` e la corrispondenza del percorso di base corrette per questa condizione.  | 
| `https://petstore.diagram.example.com/refunds` | La fase `Prod` dell’API `Refunds`.  | La richiesta non ha le intestazioni necessarie per soddisfare la regola di routing `zzz000`. Se Gateway API non riesce a soddisfare correttamente una regola di routing, utilizza le mappature API. Gateway API può mappare il percorso di base alla fase `Prod` dell’API `Refunds`.  | 
| `https://petstore.diagram.example.com/` | La fase `Prod` dell’API `Search`.  | La richiesta esegue la corrispondenza della mappatura API al percorso vuoto `(none)`. | 

## Esempio 3: regole di routing e mappature API con più livelli
<a name="rest-api-routing-rules-examples-rule-and-mappings-with-multiple-levels"></a>

In questo esempio, il nome di dominio personalizzato `https://petstore.backup.example.com` ha la modalità di routing impostata su `ROUTING_RULE_THEN_API_MAPPING` e le seguenti regole di routing e mappature API.

La tabella seguente mostra le regole di routing per `https://petstore.backup.example.com`.


|  ID della regola  |  Priorità  |  Condizioni  |  Azione  | 
| --- | --- | --- | --- | 
| `abc123` |  10  |  Se la richiesta contiene l’intestazione `Hello:World`  |  API di destinazione 1  | 
| `000zzz` |  50  |  Se la richiesta contiene le intestazioni `Accept`:`image/webp` e `Pet:Dog-*` e se il percorso di base contiene `PetStoreShopper` | API di destinazione 2 | 

La tabella riportata di seguito mostra le mappature API per `https://petstore.backup.example.com`.


|  Mappatura API  |  API selezionata  | 
| --- | --- | 
|  `PetStoreShopper`  |  API di destinazione 3  | 
|  `PetStoreShopper/cats`  |  API di destinazione 4  | 

La tabella seguente mostra come Gateway API applica le regole di routing e le mappature API precedenti alle richieste di esempio.


| Richiesta | API selezionata | Spiegazione | 
| --- | --- | --- | 
| `https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats" ` | API di destinazione 3 | La richiesta non ha le intestazioni necessarie per soddisfare la regola di routing `zzz000`. Se Gateway API non riesce a soddisfare correttamente una regola di routing, utilizza le mappature API. Gateway API può mappare il percorso di base all’API di destinazione 3. | 
| `https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"` | API di destinazione 1 | La richiesta soddisfa la regola di routing `abc123`. Se la modalità di routing è impostata su `ROUTING_RULE_THEN_API_MAPPING`, le regole di routing hanno sempre la priorità sulle mappature API. | 
| `https://petstore.example.com/Admin -h "Pet:Dog-Bella"` | Nessuno | La richiesta non soddisfa nessuna regola di routing o mappatura API. Poiché non esiste una regola di routing predefinita, Gateway API rifiuta la chiamata e invia al chiamante un codice di stato `403 Forbidden`. | 

## Esempio 4: regole di routing per i nomi di dominio con caratteri jolly
<a name="rest-api-routing-rules-examples-rule-for-wildcard-domains"></a>

In questo esempio, il nome di dominio personalizzato `https://*.example.com` è un nome di dominio con caratteri jolly. Il carattere jolly supporta tutti i sottodomini che vengono instradati nuovamente allo stesso dominio. L'esempio seguente di regole di routing modifica questo comportamento per consentire ai sottodomini di indirizzarsi verso destinazioni diverse APIs utilizzando l'intestazione. `Host`

La tabella seguente mostra le regole di routing per `https://*.example.com`.


|  ID della regola  |  Priorità  |  Condizioni  |  Azione  | 
| --- | --- | --- | --- | 
| `abc123` |  10  |  Se la richiesta contiene l’intestazione `Host:a.example.com`  |  API di destinazione 1  | 
| `000zzz` |  50  |  Se la richiesta contiene l’intestazione `Host:b.example.com` | API di destinazione 2 | 
| `efg456` |  500  | Nessuno | API di destinazione 3 | 

La tabella seguente mostra come Gateway API applica le regole di routing precedenti alle richieste di esempio.


| Richiesta | API selezionata | Spiegazione | 
| --- | --- | --- | 
| `https://a.example.com` | API di destinazione 1 | L’intestazione `Host` è `a.example.com`. Questa richiesta soddisfa la regola di routing `abc123`. | 
| `https://b.example.com` | API di destinazione 2 | L’intestazione `Host` è `b.example.com`. Questa richiesta soddisfa la regola di routing `000zzz`. | 
| `https://testing.example.com` | API di destinazione 3 | Questa richiesta soddisfa la regola di routing catch-all `efg456`. | 