• 8 hours
  • Hard

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 2/18/22

Testez votre API grâce à Postman

Comme vous avez dû le remarquer, j'ai jusqu'ici soigneusement évité d'implémenter la requête POST. En effet, lorsque nous créons une méthode utilisant ce verbe HTTP, il n'est pas possible de la tester simplement via le navigateur, comme pour une simple requête GET. Nous allons utiliser un logiciel appelé Postman qui permet d'envoyer toutes sortes de requêtes et de les personnaliser très finement. Il permet également de gérer l'authentification, les scripts de tests, etc.

Implémentez POST

Commençons par créer la méthode qui permet d'ajouter un produit :

@PostMapping(value = "/Produits")
public void ajouterProduit(@RequestBody Product product) {
  productDao.save(product);
}

@PostMapping : Vous pouvez voir qu'ici l'URI indiquée (/Produits) est exactement la même que dans la méthode listeProduits définie au chapitre précédent. Alors, comment Spring sait-il laquelle appeler ? Eh bien, grâce justement aux annotations @PostMapping et @GetMapping ! Celles-ci indiquent à quel type de requête HTTP  la méthode est associée, POST  ou GET  respectivement. Si on envoie une requête POST "/Produits", c'est la méthode annotée avec @PostMapping qui sera donc appelée.

@RequestBody : Nous avons vu plus tôt comment Spring Boot a configuré Jackson pour convertir les objets Java renvoyés en réponse (Product, dans notre cas) en JSON. Ici, nous avons besoin du contraire. Nous allons recevoir une requête POST avec les informations d'un nouveau produit au format JSON. Il nous faut donc constituer un objet Product à partir de ce JSON.

C'est là que @RequestBody vient à la rescousse. Cette annotation demande à Spring que le JSON contenu dans la partie body de la requête HTTP soit converti en objet Java. Comment ?  Spring, qui a déjà tout autoconfiguré au début, ira simplement chercher la librairie capable de faire cela, et l'utiliser. Dans notre cas c'est Jackson, mais cela pourrait tout à fait être Gson.

La requête JSON est ainsi convertie, dans notre cas, en objet Product, puis passée en paramètre à ajouterProduit. Il ne nous reste plus qu'à appeler la méthode save que nous avons déjà créée, et le nouveau produit est ajouté.

Testons tout cela, voulez-vous ?

Comprenez le principe de Postman

Postman est un logiciel qui se focalise sur les tests des API. Il est devenu très populaire pour tester les microservices, notamment grâce à sa simplicité et ses fonctionnalités très spécialisées.

Postman existe à ce jour en extension pour Chrome, mais l'éditeur a annoncé la fin prochaine de celle-ci. Je vous recommande donc d'installer le logiciel. L'application est régulièrement mise à jour, et l'interface peut donc être légèrement différente de celle présentée dans la suite de ce chapitre.

Interface de Postman (version Chrome)
Interface de Postman (version Chrome)

Voici les principales fonctionnalités à connaître pour nos tests :

  • ( 1 ) : Ici vous pouvez choisir le type de requête à envoyer : GET, POST, PUT, etc.

  • ( 2 ) : L'URL de l'API.

  • ( 3 ) : Les paramètres à passer avec l'URL. Dans le cas où vous avez des paramètres nommés, comme ?prenom=alexandre, vous allez pouvoir ajouter dans le formulaire comme paramètre prenom, et comme valeur, fabien. Ceci se révèle particulièrement utile quand vous avez beaucoup de paramètres qu'il faut organiser.

  • ( 4 ) : Ici vous retrouverez les connexions que vous avez créées. Nous y reviendrons.

  • ( 5 ) : Ici vous trouverez tout ce qui constitue une requête HTTP (header, body, etc.). Vous pouvez à partir de là créer votre requête de façon totalement personnalisée.

Faisons tout de suite un premier test. Lancez le microservice, puis revenez sur Postman et saisissez l'URL http://localhost:9090/Produits. La figure ci-après illustre la requête et le résultat obtenu :

Requête GET avec Postman
Requête GET avec Postman

Cliquez ensuite sur l'onglet Header. La figure qui suit présente l'en-tête de la réponse HTTP  fournie par votre microservice.

Visualisation des en-têtes de la réponse HTTP
Visualisation des en-têtes de la réponse HTTP

Vous pouvez remarquer que Spring a réglé la valeur Content-Type sur application/json;charset=UTF-8. Le plus important est le code de réponse en haut à droite ; dans ce cas, 200. Ce code est particulièrement important pour débugger. Je vous renvoie vers le cours REST pour la signification des différents codes.

Testez POST

Nous allons pouvoir tester à présent notre méthode ajouterProduit :

  • Sélectionnez POST puis ajoutez l'URL http://localhost:9090/Produits

  • Cliquez sur l'onglet Body qui n'est plus grisé, puis sélectionnez raw pour définir manuellement le contenu de la requête HTTP.

  • Collez ensuite un JSON avec les informations d'un produit, par exemple :

{

 

"id": 4,

 

"nom": "Poney en bois cracheur de feu",

 

"prix": 145

 

}
  • Sélectionnez à droite JSON à la place de Text afin d'indiquer dans notre requête le type de données que nous envoyons :

    Création d'une requête de type POST
    Création d'une requête de type POST
  • Cliquez sur "Send". Rien ne se passe ? C'est normal puisque notre méthode ne retourne rien. Néanmoins, vous pouvez voir que notre microservice a répondu avec le code 200 OK :

    Réponse HTTP à la requête POST
    Réponse HTTP à la requête POST
  • Vérifions si notre produit a bien été ajouté. Créez un nouvel onglet et faites appel, via GET, à http://localhost:9090/Produits :

    Requête GET d'affichage des produits
    Requête GET d'affichage des produits

Bingo ! Votre nouveau produit est ajouté. On peut dire que vous avez désormais un microservice fonctionnel.

Utilisez les collections dans Postman

Dans le panneau de gauche, vous avez 2 onglets : History et Collections.

  1. Dans History, vous avez l'historique de toutes les requêtes que vous avez exécutées. Vous pouvez y retourner et réexécuter une requête parmi celles déjà essayées.

  2. Les collections sont une façon plus permanente d'organiser et garder des requêtes pour faire des tests. Elles vont vous permettre de regrouper un ensemble de requêtes et de les lancer selon les paramètres et l'ordre de votre choix pour réaliser, par exemple, un test de scénario.

Commencez par créer une nouvelle collection en cliquant sur le bouton "Ajouter collection" :

Bouton de création d'une nouvelle collection
Bouton de création d'une nouvelle collection

Renseignez ensuite le nom de votre collection :

Interface de création d'une collection
Interface de création d'une collection

Parmi les onglets proposés, vous avez "Authorization" qui va vous permettre d'ajouter la méthode d'authentification à votre microservice. Nous y reviendrons dans la prochaine partie du cours. Cliquez sur "Create".

Ajoutez les deux requêtes que nous avons créées en cliquant sur "Save" situé à côté du bouton "Send". Vous pouvez donner un nom à la requête, mais il est plus lisible de laisser le nom par défaut, qui est tout simplement l'URL appelée. Choisissez ensuite la collection que vous venez de créer, et validez :

Enregistrement d'une requête dans la collection
Enregistrement d'une requête dans la collection

Vous obtenez alors une collection avec 2 requêtes à gauche. Vous pouvez distinguer les opérations grâce au type : GET, POST, etc.

Liste des requêtes enregistrées
Liste des requêtes enregistrées

Redémarrez le microservice afin de réinitialiser la liste des produits, puis rendez-vous sur votre collection et cliquez sur la flèche pour développer les opérations possibles. Glissez-déposez les requêtes afin que POST soit avant GET, puis cliquez sur "Run" :

Exécution de la collection
Exécution de la collection

Cette fenêtre vous permet de choisir un certain nombre d'options, comme par exemple le nombre de fois où vous souhaitez exécuter les requêtes (champ "Iterations"). Cliquez sur "Run Microcommerce" :

Configuration de l'exécution de la collection
Configuration de l'exécution de la collection

Les requêtes sont alors exécutées, et celles qui ont réussi sont marquées par un carré vert, ainsi que les codes de réponse en face :

Résultat de l'exécution de la collection
Résultat de l'exécution de la collection

Si vous souhaitez voir ce qui se passe "sous le capot", dans le cas où une des requêtes n'aurait pas fonctionné, vous pouvez avoir tous les retours via la console Postman. Allez dans "View" puis "Show Postman Console" :

Accès à la console de Postman
Accès à la console de Postman

Une fois la console lancée, réexécutez la collection. Vous pouvez alors naviguer dans le résultat de chaque requête et voir tous les détails sur celle-ci et sur sa réponse :

Affichage des détails dans la console Postman

À noter que vous pouvez choisir l'onglet "raw" pour visualiser les données brutes sans mise en forme.

En résumé

  • Postman permet de facilement interagir avec une API, notamment pour les méthodes POST et PUT.

  • Les suites de tests nous permettent de nous assurer du fonctionnement de nos microservices.

Nous allons maintenant affiner notre microservice en personnalisant les codes de retour.

Example of certificate of achievement
Example of certificate of achievement