Enchaîner des requêtes
Connectez-vous une fois, stockez le jeton et envoyez-le depuis chaque requête qui en a besoin, avec des valeurs dynamiques et une Idempotency-Key.
La plupart des API veulent un jeton que l’on obtient en se connectant. Dans ce tutoriel, vous stockez le jeton de la
boutique de démo dans une variable à partir de la réponse de connexion, vous l’envoyez depuis tout un dossier grâce à son
authentification, vous lisez une valeur d’une réponse pour la mettre dans la requête suivante, et vous passez une
commande en toute sécurité avec une Idempotency-Key.
- Durée : 15 minutes.
- Il vous faut : l’espace de travail de Votre premier espace de travail, avec l’environnement Demo choisi et la requête Auth › Sign in. Alpenglow a déjà tout cela ; ouvrez-le pour comparer.
- Vous apprenez : les captures de réponse, l’authentification héritée, les valeurs dynamiques et les valeurs de réponse.
1. Stocker le jeton de la réponse de connexion
- Ouvrez Auth › Sign in et envoyez-la (⌘R).
- Dans l’onglet Corps de la réponse, passez l’affichage sur Arbre JSON.
- Laissez le pointeur sur la ligne
access_token. De petits boutons apparaissent après la valeur. Choisissez celui dont l’aide indique Stocker dans une variable…. - Dans la fenêtre Stocker dans une variable :
- Changez le nom en
token. - Sous la portée, choisissez Environnement « Demo » : chaque serveur a ses propres jetons.
- Vérifiez que Secret · conservé dans le trousseau, jamais dans les fichiers est coché. Echolot le coche de lui-même pour des noms
comme
token. - Laissez Mettre à jour à chaque envoi · enregistré avec cette requête coché.
- Changez le nom en
- Cliquez sur Stocker.
Ouvrez l’onglet Variables de la requête. Sous Depuis la réponse se trouve une ligne : token, depuis JSON,
chemin $.access_token, enregistré dans Demo, secret. Désormais, chaque envoi réussi de Sign in écrit le nouveau
jeton dans {{token}}. Une réponse de 400 ou plus, ou sans la valeur, laisse la variable intacte. Détails dans les
captures de réponse.

2. Envoyer le jeton depuis tout un dossier
Au lieu de définir l’authentification Bearer sur chaque requête, définissez-la une fois sur un dossier.
- Créez un dossier
Orders(⇧⌘N). - Faites un clic droit sur Orders et choisissez Réglages du dossier….
- Dans l’onglet Auth, définissez Type sur Jeton Bearer et Jeton sur
{{token}}. Cliquez sur Terminé. - Faites un clic droit sur Orders, choisissez Nouvelle requête et nommez-la
List orders. Définissez son URL sur{{baseURL}}/orders. - Ouvrez son onglet Auth. Type est Hériter, et la ligne Utilise indique qu’elle prend le jeton Bearer du dossier.
- Envoyez-la.
Vous obtenez les trois commandes de Heidi : ord_7Hk2Lw (expédiée), ord_8Jm4Qx (payée) et ord_5Fd9Ra (livrée).
Chaque nouvelle requête dans Orders envoie le jeton de la même façon. Les requêtes démarrent sur Hériter, qui
prend l’authentification du dossier le plus proche, puis celle de l’espace de travail. Voir auth
pour les autres types.
Si vous obtenez 401 Unauthorized plus tard, le jeton a expiré : il dure une heure. Envoyez Sign in de nouveau et le
jeton est mis à jour.
3. Lire une valeur dans une autre réponse
La requête suivante lit l’id de la première commande dans la réponse à List orders, pour que vous ne le copiiez jamais à la main.
- Dans Orders, créez une requête
Get order. - Dans son champ URL, saisissez
{{baseURL}}/orders/puis{{$response. La liste affiche les valeurs dynamiques du groupe Réponses. Choisissez Réponse filtrée par JSONPath. - Dans le formulaire qui s’ouvre, définissez Requête sur la requête List orders (
orders/list-orders) et JSONPath sur$.items[0].id. Laissez L’envoyer d’abord sur Quand elle n’a pas encore de réponse. Cliquez sur Terminé.
L’URL contient maintenant un jeton qui représente {{$responseJSONPath('orders/list-orders', '$.items[0].id')}}. Laissez
le pointeur dessus pour voir la valeur qu’il a actuellement : ord_7Hk2Lw. Envoyez Get order et vous obtenez cette
commande avec ses lignes et son expédition. Si List orders n’avait jamais été envoyée, Echolot l’enverrait d’abord.
4. Passer une commande avec des valeurs dynamiques
Les valeurs dynamiques sont recréées à chaque envoi. Utilisez-en deux dans une nouvelle commande.
-
Dans Orders, créez une requête
Create orderavec la méthode POST et l’URL{{baseURL}}/orders. -
Dans l’onglet Corps, choisissez JSON et saisissez le corps. Utilisez la liste de
{{pour insérer Horodatage ISO 8601 :{ "lines": [ { "sku": "TNT-MH-2P", "quantity": 1 }, { "sku": "PCK-TIT-30", "quantity": 2 } ], "note": "Placed from Echolot at {{$isoTimestamp}}" } -
Dans l’onglet En-têtes, ajoutez un en-tête
Idempotency-Key. Pour sa valeur, saisissez{{et choisissez UUID ({{$uuid}}). -
Envoyez-la.
La réponse est 201 Created avec un en-tête Location comme /v1/orders/ord_…, et la boutique renvoie votre
Idempotency-Key. La note porte l’heure de l’envoi. La démo ne stocke rien, la nouvelle commande ne peut donc pas être
récupérée ensuite. Toutes les valeurs dynamiques sont dans la référence.

5. Voir ce que fait l’Idempotency-Key
Une Idempotency-Key indique au serveur que les envois avec la même clé sont la même commande, de sorte qu’envoyer de
nouveau ne la passe jamais deux fois.
- Envoyez Create order de nouveau. L’id dans
Locationchange :{{$uuid}}a créé une nouvelle clé. - Dans l’onglet En-têtes, remplacez
{{$uuid}}par une valeur fixe commetutorial-order-1. - Envoyez deux fois. Les deux réponses portent le même id de commande.
Les vraies API utilisent la clé pour écarter une requête répétée qui était déjà passée la première fois. Echolot s’en
sert aussi : quand une connexion maintenue ouverte se ferme avant toute réponse, il renvoie une requête sur une nouvelle
connexion uniquement si l’envoyer deux fois est sans danger. C’est le cas pour GET, PUT, DELETE et les autres
méthodes sûres ou idempotentes, et pour toute requête avec un en-tête Idempotency-Key. Un POST sans clé échoue à la
place, pour qu’une commande ne soit jamais passée deux fois dans votre dos. Remettez {{$uuid}} quand vous avez fini.
Deux autres choses que la boutique vérifie :
- Changez une quantité en
0et envoyez :422 Unprocessable Contentliste ce qui ne va pas pour chaque ligne. - Orders with OAuth 2 dans Alpenglow obtient son jeton par identifiants client. Ce jeton peut lire les commandes
mais pas en passer :
POST /v1/ordersavec lui répond403 Forbidden.
Étapes suivantes
- Tester une API et l’exécuter en CI : ajoutez des vérifications et exécutez toute la chaîne d’un coup.
- Scripts et tests :
pm.environment.set()et compagnie, quand une capture ne suffit pas. - OAuth 2.0 et les autres types d’authentification : laissez Echolot obtenir et renouveler les jetons pour vous.
Votre premier espace de travail
Créez un espace de travail de zéro avec l’API de démo, avec des requêtes, un dossier, un environnement, un secret et Git.
Tester une API et l’exécuter en CI
Ajoutez des vérifications aux requêtes, exécutez-les dans l’Exécution, puis lancez le même espace de travail avec l’outil en ligne de commande dans GitHub Actions avec un rapport JUnit.

