Les tests d'API efficaces reposent sur l'extraction et la manipulation efficaces des données des réponses JSON. Postman, une plateforme de développement d'API populaire, permet aux utilisateurs d'utiliser JSONPath, un langage de requête puissant spécialement conçu pour naviguer dans les structures JSON.
Si vous recherchez un outil d'API pour poursuivre le développement de votre application ou de votre API, vous devriez sérieusement envisager d'utiliser Apidog - une solution unique à tous vos problèmes d'API.
Si vous souhaitez en savoir plus sur Apidog, cliquez sur le bouton ci-dessous !
Cet article explore le monde de Postman JSONPath, vous donnant les compétences nécessaires pour libérer tout le potentiel de vos interactions API.
Qu'est-ce que JSONPath ?
JSON (JavaScript Object Notation) est un format de données omniprésent pour l'échange d'informations entre les API et les applications. Bien que sa nature lisible par l'homme soit un plus, les réponses JSON complexes avec des objets et des tableaux imbriqués peuvent être décourageantes à naviguer. C'est là que JSONPath entre en jeu – un langage de requête concis spécialement conçu pour parcourir et extraire des données des structures JSON.
Les expressions JSONPath ressemblent à une feuille de route, vous guidant à travers la hiérarchie JSON. Voici comment cela fonctionne :
Élément racine
Les éléments racines sont représentés par $, il signifie l'ensemble du document JSON.
Nœuds enfants
La notation pointée (.) ou la notation entre crochets ([]) est utilisée pour accéder aux nœuds enfants.
- La notation pointée est préférée pour les noms de propriétés simples :
$.namesélectionne la propriété "name" de l'objet racine. - La notation entre crochets est utilisée pour accéder aux propriétés avec des caractères spéciaux ou des espaces :
$['full name']cible la propriété "full name".
Tableaux
Des crochets avec un index accèdent à des éléments spécifiques : $.items[1] sélectionne le deuxième élément du tableau "items". Les caractères génériques (*) peuvent être utilisés pour cibler tous les éléments : $.products[*] sélectionne tous les éléments du tableau "products".
Filtres
Les filtres vous permettent de réduire les résultats en fonction de conditions. Par exemple, $..[?(@.price > 100)] sélectionne tous les objets dans la structure JSON (indiqué par ..) où le "price" de la propriété est supérieur à 100.
Comment Postman fonctionne-t-il avec JSONPath ?
Scripts de test
Les expressions JSONPath peuvent être intégrées aux scripts de test de Postman pour extraire des données spécifiques des réponses et effectuer des assertions.
- Exemple :
pm.test("Status code is 200", () => pm.response.json().statusCode === 200); - Exemple (avec JSONPath) :
pm.test("User ID is 123", () => pm.response.jsonPath("$.id") === 123);
Collections
JSONPath peut être utilisé dans les variables de collection pour définir dynamiquement les paramètres de requête en fonction des réponses précédentes. Cela permet de créer des cas de test réutilisables et basés sur les données.
- Exemple : Récupérez un ID d'utilisateur à partir d'une réponse précédente et utilisez-le dans une requête ultérieure :
pm.collectionVariables.set("userId", pm.response.jsonPath("$.id"));
Scripts de pré-requête
Les expressions JSONPath peuvent être utilisées dans les scripts de pré-requête pour manipuler les données avant d'envoyer une requête.
- Exemple : Modifiez un corps de requête en fonction de valeurs spécifiques d'une variable d'environnement de test :
pm.request.body.set("productId", pm.environment.variables.selectedProduct.id);
Exemples de requêtes JSONPath
Ce sont quelques exemples de requêtes JSONPath qui peuvent être implémentées dans la section de pré-requête de Postman.

Exemple 1 - Logique conditionnelle avec la fonction if
Imaginez une réponse avec une propriété "isActive" pour les utilisateurs. Vous souhaitez extraire leurs noms, mais uniquement s'ils sont actifs.
$.users[*].if(@.isActive, $.name, "Inactive")
Ce code utilise la fonction if. Si l'objet utilisateur actuel a une propriété "isActive" définie sur true, il extrait son nom. Sinon, il renvoie la chaîne "Inactive".
Exemple 2 - Recherche des valeurs minimum/maximum
Disons que vous avez un tableau "orders" avec une propriété "amount" pour chaque commande. Vous souhaitez trouver la commande avec le montant minimum et maximum.
$..[?(@.type == "order")].amount.min() // Minimum amount
$..[?(@.type == "order")].amount.max() // Maximum amount
Ces requêtes exploitent les fonctions min() et max() pour identifier les valeurs respectives dans la propriété "amount" pour toutes les commandes.
Exemple 3 - Aplatissement des tableaux imbriqués
Postman ne prend pas en charge nativement les tableaux imbriqués. Si vous avez une réponse avec des catégories de produits imbriquées, vous souhaiterez peut-être les aplatir en une seule liste.
$.categories..[*] | flatten
Ce code utilise l'opérateur de pipeline (|) et la fonction flatten. Il traverse tous les éléments imbriqués dans la structure "categories" et les aplatit en un tableau à un seul niveau.
Exemple 4 - Travailler avec des dates et des nombres
JSONPath peut manipuler les dates et les nombres. Disons que vous avez un horodatage "createdAt" pour les utilisateurs. Vous souhaitez le formater dans un format de date spécifique.
pm.response.json().users[*].createdAt.toString(pm.timestampFormat("YYYY-MM-DD")) // Assuming a pre-defined format function
Cet exemple combine JSONPath avec une fonction de script Postman (pm.timestampFormat) pour formater l'horodatage "createdAt" dans le format souhaité (YYYY-MM-DD) dans un script de pré-requête.
Exemple 5 - Combinaison de JSONPath avec les variables Postman
Vous pouvez contrôler dynamiquement les requêtes JSONPath à l'aide des variables Postman. Supposons que vous souhaitiez filtrer les utilisateurs en fonction d'un ID d'utilisateur stocké dans une variable.
$.users[?(@.id == pm.variables.get("selectedUserId"))]
Ici, le pm.variables.get("selectedUserId") récupère la valeur stockée dans la variable "selectedUserId" et l'utilise dans le filtre JSONPath pour la sélection dynamique des utilisateurs.
Apidog - Configurez rapidement des scripts de pré-processeur
Apidog est un outil de développement d'API complet qui peut être une alternative parfaite à Postman pour les développeurs.

Avec des outils complets pour l'ensemble du cycle de vie de l'API, les développeurs peuvent créer, tester, simuler et documenter les API en seulement Apidog !

Définition de scripts d'API personnalisés à l'aide d'Apidog

Apidog fournit aux développeurs des fonctionnalités de génération de code pour les scripts personnalisés. Vous pouvez obtenir et définir des variables d'environnement et locales.

Vous pouvez également personnaliser la section post-processeur de votre API, en spécifiant l'expression JSONPath et l'objet cible.
Création de nouvelles API avec Apidog
Apidog offre aux utilisateurs un degré élevé de flexibilité de conception dans le processus de création d'API. Cela permet le développement d'API qui correspondent précisément aux exigences fonctionnelles de votre application ou aux besoins spécifiques de ses utilisateurs prévus.

Commencez par appuyer sur le bouton New API, comme indiqué dans l'image ci-dessus.

Après avoir établi les fonctionnalités de base de votre API, il est maintenant essentiel de définir méticuleusement ses caractéristiques opérationnelles. Cette section décrit les considérations clés impliquées dans ce processus :
- Méthodes HTTP : La sélection de la méthode HTTP appropriée (GET, POST, PUT, DELETE) est essentielle. Ces méthodes régissent la façon dont les utilisateurs interagissent avec et manipulent les informations au sein de votre API.
- Point de terminaison de l'API : Une adresse Web unique (point de terminaison) doit être choisie pour servir de point d'accès aux utilisateurs pour localiser et interagir avec votre API.
- Paramètres d'entrée : Il est nécessaire de spécifier clairement tous les éléments de données que les utilisateurs peuvent intégrer à l'adresse de l'API pour récupérer des réponses spécifiques.
- Fonctionnalité : Une explication claire est requise pour détailler les actions et les résultats précis facilités par votre API.
Pour vous assurer que vous créez des API efficaces, pensez à consulter ces articles utiles sur les meilleures pratiques en matière d'API REST.

Conclusion
L'intégration de JSONPath par Postman déverrouille un outil puissant et polyvalent pour naviguer et manipuler les données dans les réponses JSON. En maîtrisant les expressions JSONPath, vous pouvez extraire efficacement des valeurs spécifiques, filtrer les résultats en fonction de conditions et même effectuer des transformations de données complexes. Cela vous permet de rationaliser les flux de travail de test d'API, d'obtenir des informations plus approfondies à partir des réponses et de créer des cas de test robustes qui garantissent la fonctionnalité et la fiabilité de vos API.
De plus, l'intégration transparente de JSONPath avec les capacités de script de Postman ouvre la voie à des cas d'utilisation encore plus avancés. Vous pouvez contrôler dynamiquement les requêtes à l'aide de variables, exploiter des fonctions pour une manipulation sophistiquée des données et combiner JSONPath avec des scripts de pré-requête ou des scripts de test pour automatiser des tâches complexes. En adoptant la puissance de JSONPath dans Postman, vous élevez votre processus de développement d'API à un tout nouveau niveau d'efficacité et d'efficacité.
![[Guide] Que signifie JSONPath Postman ?](https://assets.apidog.com/blog/2024/07/postman-jsonpath-cover.png)


