• Contenu
  • Bas de page
logo ouidoulogo ouidoulogo ouidoulogo ouidou
  • Qui sommes-nous ?
  • Offres
    • 💻 Applications métier
    • 🤝 Collaboration des équipes
    • 🛡️ Sécurisation et optimisation du système d’information
    • 🔗 Transformation numérique
  • Expertises
    • 🖥️ Développement logiciel
    • ♾️ DevSecOps
    • ⚙️ Intégration de logiciels et négoce de licences
      • Atlassian : Jira, Confluence, Bitbucket…
      • Plateforme monday.com
      • GitLab
      • SonarQube
    • 📚​ Logiciel de CRM et de gestion
    • 🎨 UX/UI design
    • 🌐 Accessibilité Numérique
    • 🗂️​ Démarches simplifiées
    • 📝 Formations Atlassian
  • Références
  • Carrières
    • 🧐 Pourquoi rejoindre Ouidou ?
    • ✍🏻 Nous rejoindre
    • 👨‍💻 Rencontrer nos collaborateurs
    • 🚀 Grandir chez Ouidou
  • RSE
  • Ressources
    • 🗞️ Actualités
    • 🔍 Articles techniques
    • 📖 Livres blancs
    • 🎙️ Interviews Clients
Nous contacter
✕
Regex, ZSH & Darwin
Regex, ZSH & Darwin
18 novembre 2021
Polytech Paris-Saclay & Ouidou, encore un succès !
Polytech Paris-Saclay & Ouidou, encore un succès !
30 novembre 2021
Ressources > Articles techniques > Test d’API & chaining request

Test d’API & chaining request

Article écrit par Ilias Messnaoui

Aujourd’hui nous traiterons d’une fonctionnalité d’outils de test d’API fort pratique.

En effet, j’ai pris l’habitude de vérifier les API de mes amis côté backend afin de pouvoir leur faire des retours rapidement avant de me lancer dans le développement côté frontend. Pour cela j’utilise Postman et Insomnia, car je souhaite identifier leurs points communs et les spécificités de chacun.

Nous découvrirons cette fonctionnalité via le parcours d’un utilisateur qui souhaite se connecter à une application de vente immobilière et consulter ses biens favoris.

Pour les besoins de cet article, j’utiliserai le serveur de mock de Postman afin de simuler l’API de l’application. Insomnia ne propose pas cette fonctionnalité. (Pour les applications frontend, nous utilisons Mirage.js pour les raisons évoquées dans cet article).

Nous aurons donc deux endpoints. Un premier /sign_in pour nous connecter et récupérer les informations d’utilisateurs (notamment le token et l’identifiant du bien).

Requête de connection

Puis un second /properties/:id afin de récupérer les caractéristiques des biens. Cette deuxième requête nécessitera une authentification en plus du paramètre.

Requête du bien

property_id et token sont des variables vides pour l’instant.

En effet, les deux logiciels nous proposent de créer des variables et de les stocker dans des environnements afin de les utiliser pour des requêtes.

De manière classique, nous devrions faire la requête sign_in dans un premier temps, puis copier les valeurs de la réponse nécessaires dans des variables. Et il faudra le faire à chaque changement de token ou property_id.

{   "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",   "property_id": "c6eccf4a-eac1-4d8b-a650-2ff703a0cd44" } 

Plutôt fastidieux ! Mais ne vous inquiétez pas, le chaining request entre en jeu.

En quoi consiste le chaining request ?

Il s’agit de récupérer les données d’une requête afin de les utiliser dans d’autres requêtes. Typiquement, nous voudrions conserver des valeurs comme les tokens et des identifiants lors de la connexion.

Postman et Insomnia nous propose tous les deux cette fonctionnalité mais de manière différente.

Insomnia, simple et rapide grâce aux templates tags

Les templates tags sont des fonctions qui retournent une valeur finale. Ainsi, elles nous permettent plusieurs choses :

  • Génération d’UUID ;
  • Possibilité d’encoder et de décoder des variables ;
  • Récupérer l’heure actuelle.

Types de templates tags

Nous pourrions les qualifier de variables dynamiques. Par conséquent, elles sont utilisables aux mêmes endroits que les variables avec la combinaison Ctrl + Espace.

Vous pouvez créer également vos propres templates tags via les plugins d’Insomnia.

Dans notre cas, c’est la fonction response qui nous intéresse. Nous voulons créer des variables à partir de la réponse d’une requête.

Réponse de templates tags

Plusieurs paramètres sont à notre disposition :

  • Attribute nous permettra de définir ce que nous voulons récupérer de la réponse. Attribut de la réponse
  • Request où l’on sélectionnera la requête désirée.
  • Filter isolera la donnée souhaitée. Le signe « $ » correspondant au corps entier de la réponse, nous nous aiderons du live preview afin de définir le path du filtre. Filtre de la réponse
  • Enfin, Trigger Behavior précisera pour quelle condition renvoyer la requête. Ainsi nous pourrons rafraîchir notre token s’il a une durée de vie de trente minutes. Déclencheur de la requête.

Et voici ! Notre variable token est prête. Maintenant, chaque requête utilisant cette donnée lancera si besoin une requête préliminaire.

Je n’ai plus qu’à faire la même chose pour property_id, et notre requête /properties/:id sera « liée » à /sign_in grâce au chaining request

Postman, plus puissant pour une API plus volumineuse.

les scripts dans Postman

Postman embarque un environnement d’exécution basé sur Node.js nous permettant d’utiliser du JavaScript. De plus, nous avons accès à la bibliothèque pm de Postman qui propose de nombreuses fonctionnalités (chaining request, tests).

Nous pouvons exécuter des scripts pour une requête à plusieurs moments :

  • Avant la requête grâce à Pre-request Script.
  • Après la requête via les Tests.

Requête postman

Dans notre cas, nous souhaitons exécuter un script à la fin de la requête /sign_in (ce sont donc les Tests qui nous intéressent). L’idée, c’est d’utiliser la bibliothèque pm afin de créer des variables à partir de la réponse de la requête.

// Ici l'objet pm.response.json() // retourne le corps de la réponse. const {token, properties} = pm.response.json();  // Il ne reste plus qu'à configurer les variables. pm.environment.set("token", token); pm.environment.set("property_id", properties[0].id); 

pm.environnement se réfère à l’environnement actif de la requête. Nous aurions pu utiliser pm.globals pour des variables globales ou pm.collectionVariables pour des variables de collection.

Sachez qu’il est possible d’ajouter des scripts à des collections également.

Qu’est-ce qu’une collection ?

C’est un conteneur de requêtes disposant de certains outils qu’il partagera avec toutes ces dernières. Les collections sont parfaites pour définir des workflows ou flux d’utilisation.

Collection postman

Dans cet exemple j’ai deux collections. L’une représentant le flux d’un administrateur, l’autre celui d’un utilisateur.

Nous pouvons choisir ainsi, un type d’authentification, des scripts et des variables communs à l’ensemble de la collection.

Réglage de collection

Enfin nous pourrons lancer la collection afin de tester l’ensemble des requêtes.

Test de collection

Nous retrouvons ici le récapitulatif des tests, mais aussi le résultat des requêtes.

Résultat de test

Finalement, les deux requêtes se retrouvent liées par la combinaison des scripts et des collections.

Maintenant, les requêtes en chaîne n’auront pour limite que votre besoin (ou votre imagination) !

En conclusion

Le chaining request s’avère très pratique dans des cas simples. Mais également indispensable pour vérifier des flux d’utilisations ou pour tester des API volumineuses.

La fonctionnalité est commune à Postman et Insomnia. L’utilisation de l’un ou de l’autre sera régie par vos besoins.

À lire aussi

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique

Lire la suite

intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 

Lire la suite

Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 

Lire la suite

image miniature les nouveautés Atlassian
26 février 2025

Les nouveautés Atlassian en 2025

Lire la suite

Articles associés

Fresque numérique miniature image
16 avril 2025

Fresque du Numérique


Lire la suite
intelligence artificielle Ouicommit miniature image
17 mars 2025

Ouicommit – L’intelligence artificielle en entreprise, on y est ! 


Lire la suite
Image miniature Hackathon Women in Tech
13 mars 2025

Hackathon Women in Tech :  un engagement pour une tech plus inclusive 


Lire la suite

À propos

  • Qui sommes-nous ?
  • Références
  • RSE
  • Ressources

Offres

  • Applications métier
  • Collaboration des équipes
  • Sécurisation et optimisation du système d’information
  • Transformation numérique

Expertises

  • Développement logiciel
  • DevSecOps
  • Intégration de logiciels et négoce de licences
  • Logiciel de CRM et de gestion
  • UX/UI design
  • Accessibilité Numérique
  • Démarches simplifiées
  • Formations Atlassian

Carrières

  • Pourquoi rejoindre Ouidou ?
  • Nous rejoindre
  • Rencontrer nos collaborateurs
  • Grandir chez Ouidou

SIEGE SOCIAL
70-74 boulevard Garibaldi, 75015 Paris

Ouidou Nord
165 Avenue de Bretagne, 59000 Lille

Ouidou Rhône-Alpes
4 place Amédée Bonnet, 69002 Lyon

Ouidou Grand-Ouest
2 rue Crucy, 44000 Nantes

Ouidou Grand-Est
7 cour des Cigarières, 67000 Strasbourg

  • Linkedin Ouidou
  • GitHub Ouidou
  • Youtube Ouidou
© 2024 Ouidou | Tous droits réservés | Plan du site | Mentions légales | Déclaration d'accessibilité
    Nous contacter