

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exemples d’évaluation de règles de routage par API Gateway
<a name="rest-api-routing-rules-examples"></a>

La section suivante présente quatre exemples d’évaluation de règles de routage et de mappages d’API par API Gateway.

## Exemple 1 : règles de routage uniquement
<a name="rest-api-routing-rules-examples-rule-only"></a>

Dans cet exemple, le mode de routage du nom de domaine personnalisé `https://petstore.example.com` est défini sur `ROUTING_RULE_ONLY`, et ce dernier possède les règles et priorités de routage suivantes.


|  ID de la règle  |  Priority  |  Conditions  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Si la demande contient l’en-tête `Hello:World`   |   API cible 1   | 
|  `zzz000`  |   50   |   Si la demande contient les en-têtes `Accept:image/webp` et `Pet:Dog-*`, et si le chemin de base contient `PetStoreShopper`  |   API cible 2   | 
|  `efg456`  |   100   |  Aucune  |   API cible 3   | 

Le tableau suivant montre comment API Gateway applique les règles de routage précédentes à des exemples de demande.


| Requête | API sélectionnée | Explication | 
| --- | --- | --- | 
|  `https://petstore.example.com -h "Hello:World"`  |  API cible 1  |  La demande correspond à la règle de routage `abc123`.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Hello:World", "Pet:Dog-Bella", "Accept:image/webp"`  |  API cible 1  |  API Gateway évalue toutes les règles de routage par ordre de priorité. La règle de routage `abc123` a la priorité la plus élevée et les conditions correspondent. API Gateway invoque donc l’API cible 1. Bien que les conditions de la demande correspondent également à la règle de routage `zzz000`, API Gateway n’évalue aucune autre règle de routage après avoir identifié une correspondance.  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella", "Accept:image/webp"`  |  API cible 2  |  La demande correspond à la règle de routage `zzz000`. Il y a correspondance, car `Pet:Dog-Bella` correspond à la chaîne `Pet:Dog-*`  | 
|  `https://petstore.example.com/PetStoreShopper -h "Pet:Dog-Bella"`  |  API cible 3  |  La demande ne correspond pas à la règle de routage `abc123`. La demande ne correspond pas à la règle de routage `zzz000`, car tous les en-têtes requis ne sont pas présents. La règle de priorité suivante correspond à toutes les demandes entrantes. API Gateway invoque donc l’API cible 3.  | 

## Exemple 2 : règles de routage et mappages d’API
<a name="rest-api-routing-rules-examples-rule-and-mappings"></a>

Dans cet exemple, le mode de routage du nom de domaine personnalisé `https://petstore.diagram.example.com` est défini sur `ROUTING_RULE_THEN_API_MAPPING`, et ce dernier possède les règles de routage et mappages d’API suivants.


|  ID de la règle  |  Priority  |  Conditions  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   1   |   Si la demande contient `pets`   |   Invoquer l’étape `Prod` de l’API `PetStore`.   | 
|  `000zzz`  |   5   |   Si la demande contient l’en-tête `Cookie`:`*ux=beta*` et si le chemin de base contient `/refunds`  |   Invoquer l’étape `Beta` de l’API `Refunds`.   | 

Le tableau suivant présente les mappages d’API pour `https://petstore.backup.example.com`.


|  Mappage d’API  |  API sélectionnée  | 
| --- | --- | 
|   `/refunds`   |   Invoquer l’étape `Prod` de l’API `Refunds`.   | 
|   `(none)`   |   Invoquer l’étape `Prod` de l’API `Search`.   | 

Le schéma suivant montre comment API Gateway applique les règles de routage et les mappages d’API précédents à des exemples de demande. Ces exemples sont résumés dans le tableau qui suit ce schéma.

![\[Schéma d’application des règles de routage et des mappages d’API précédents par API Gateway.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/rr-diagram.png)


Le tableau suivant montre comment API Gateway applique les règles de routage et les mappages d’API précédents à des exemples de demande.


| Requête | API sélectionnée | Explication | 
| --- | --- | --- | 
|  `https://petstore.diagram.com/pets`  |  Étape `Prod` de l’API `PetStore`.  |  La demande correspond à la règle de routage `abc123`.  | 
|  `https://petstore.diagram.example.com/refunds -h "Cookie:lang=en-us;ux=beta"`  |  Étape `Beta` de l’API `Refunds`.  |  La demande correspond à la règle de routage `000zzz`. L’en-tête `Cookie` contient la bonne correspondance `*contains*` et le bon chemin de base pour cette condition.   | 
|  `https://petstore.diagram.example.com/refunds`  |  Étape `Prod` de l’API `Refunds`.   |  La demande ne possède pas les en-têtes requis pour correspondre à la règle de routage `zzz000`. Si API Gateway ne parvient pas à identifier de correspondance avec la règle de routage, il passe aux mappages d’API. API Gateway peut mapper le chemin de base à l’étape `Prod` de l’API `Refunds`.   | 
|  `https://petstore.diagram.example.com/`  |  Étape `Prod` de l’API `Search`.   |  La demande correspond au mappage de l’API vers le chemin vide `(none)`.  | 

## Exemple 3 : règles de routage et mappages d’API à plusieurs niveaux
<a name="rest-api-routing-rules-examples-rule-and-mappings-with-multiple-levels"></a>

Dans cet exemple, le mode de routage du nom de domaine personnalisé `https://petstore.backup.example.com` est défini sur `ROUTING_RULE_THEN_API_MAPPING`, et ce dernier possède les règles de routage et mappages d’API suivants.

Le tableau suivant présente les règles de routage pour `https://petstore.backup.example.com`.


|  ID de la règle  |  Priority  |  Conditions  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Si la demande contient l’en-tête `Hello:World`   |   API cible 1   | 
|  `000zzz`  |   50   |   Si la demande contient les en-têtes `Accept`:`image/webp` et `Pet:Dog-*`, et si le chemin de base contient `PetStoreShopper`  |  API cible 2  | 

Le tableau suivant présente les mappages d’API pour `https://petstore.backup.example.com`.


|  Mappage d’API  |  API sélectionnée  | 
| --- | --- | 
|   `PetStoreShopper`   |   API cible 3   | 
|   `PetStoreShopper/cats`   |   API cible 4   | 

Le tableau suivant montre comment API Gateway applique les règles de routage et les mappages d’API précédents à des exemples de demande.


| Requête | API sélectionnée | Explication | 
| --- | --- | --- | 
|  `https://petstore.example.com/PetStoreShopper -h "Accept:image/webp", "Pet:Cats" `  |  API cible 3  |  La demande ne possède pas les en-têtes requis pour correspondre à la règle de routage `zzz000`. Si API Gateway ne parvient pas à identifier de correspondance avec la règle de routage, il passe aux mappages d’API. API Gateway peut mapper le chemin de base à l’API cible 3.  | 
|  `https://petstore.example.com/PetStoreShopper/cats -h "Hello:World"`  |  API cible 1  |  La demande correspond à la règle de routage `abc123`. Si le mode de routage est défini sur `ROUTING_RULE_THEN_API_MAPPING`, les règles de routage ont toujours la priorité sur les mappages d’API.  | 
|  `https://petstore.example.com/Admin -h "Pet:Dog-Bella"`  |  Aucune  |  La demande ne correspond à aucune règle de routage ni à aucun mappage d’API. En l’absence de règle de routage par défaut, API Gateway rejette l’appel et envoie à l’appelant le code d’état `403 Forbidden`.  | 

## Exemple 4 : règles de routage pour les noms de domaine génériques
<a name="rest-api-routing-rules-examples-rule-for-wildcard-domains"></a>

Dans cet exemple, le nom de domaine personnalisé `https://*.example.com` est un nom de domaine générique. Le caractère générique prend en charge tous les sous-domaines renvoyant vers le même domaine. Les exemples de règles de routage suivants modifient ce comportement pour permettre aux sous-domaines d'être acheminés vers une cible différente à l'aide APIs de l'`Host`en-tête.

Le tableau suivant présente les règles de routage pour `https://*.example.com`.


|  ID de la règle  |  Priority  |  Conditions  |  Action  | 
| --- | --- | --- | --- | 
|  `abc123`  |   10   |   Si la demande contient l’en-tête `Host:a.example.com`   |   API cible 1   | 
|  `000zzz`  |   50   |   Si la demande contient l’en-tête `Host:b.example.com`  |  API cible 2  | 
|  `efg456`  |   500   |  Aucune  |  API cible 3  | 

Le tableau suivant montre comment API Gateway applique les règles de routage précédentes à des exemples de demande.


| Requête | API sélectionnée | Explication | 
| --- | --- | --- | 
|  `https://a.example.com`  |  API cible 1  |  L’en-tête `Host` est `a.example.com`. Cette demande correspond à la règle de routage `abc123`.  | 
|  `https://b.example.com`  |  API cible 2  |  L’en-tête `Host` est `b.example.com`. Cette demande correspond à la règle de routage `000zzz`.  | 
|  `https://testing.example.com`  |  API cible 3  |  Cette demande correspond à la règle de routage fourre-tout `efg456`.  | 