Avez-vous une question? (216) 97 656 803 hajjriadh@gmail.com
NestJS

Tester une API avec Postman, Thunder Client et les fichiers .http

Cette leçon présente les outils pour tester une API pendant le développement, puisque le navigateur ne permet d'envoyer facilement que des requêtes GET : Postman, Thunder Client dans VS Code, les fich...

0 chapitres 0 QCM Accès gratuit
Tester une API avec Postman, Thunder Client et les fichiers .http

À propos de ce cours

Cette leçon présente les outils pour tester une API pendant le développement, puisque le navigateur ne permet d'envoyer facilement que des requêtes GET : Postman, Thunder Client dans VS Code, les fichiers .http de l'extension REST Client (versionnables avec le projet) et la commande curl. Les activités font tester les cinq routes CRUD d'une ressource NestJS générée et enregistrer les requêtes dans le dépôt GitHub.

Objectifs de la leçon

  • Comprendre pourquoi le navigateur ne suffit pas pour tester une API.
  • Envoyer des requêtes GET, POST, PATCH et DELETE avec plusieurs outils.
  • Écrire et versionner un fichier de requêtes .http.
  • Lire une réponse : statut, en-têtes, corps et durée.
Pourquoi un outil de test ?

Taper une adresse dans le navigateur envoie toujours une requête GET. Pour créer (POST), modifier (PATCH) ou supprimer (DELETE), envoyer un corps JSON ou un jeton d'authentification, il faut un client d'API.

Outils pour tester une API

Quel que soit l'outil, on envoie une requête et on analyse la réponse.

Pour les exemples, générez une ressource dans votre projet : nest g res groupes (REST API, CRUD : oui), puis lancez npm run start:dev.

1. Postman

Postman est l'application de référence pour tester des API (postman.com).

  1. Cliquez sur New → HTTP.
  2. Choisissez la méthode POST et l'adresse http://localhost:3000/groupes.
  3. Onglet Body → raw → JSON, saisissez { "code": "DEV101", "filiere": "Développement" }.
  4. Cliquez sur Send et lisez la réponse : statut 201 Created, corps, durée.
  5. Enregistrez la requête dans une collection « API stagiaires » pour la réutiliser.

Postman permet aussi de définir des variables d'environnement (par exemple {{baseUrl}}) pour passer facilement du serveur local au serveur de production.

2. Thunder Client (dans VS Code)

Thunder Client offre le même principe directement dans VS Code : icône éclair dans la barre latérale → New Request. Méthode, URL, onglet Body → JSON, puis Send. Pratique pour ne pas quitter l'éditeur ; certaines fonctions avancées sont réservées à la version payante.

3. Les fichiers .http (extension REST Client)

Avec l'extension REST Client, les requêtes sont écrites dans un simple fichier texte .http. Gros avantage : ce fichier est versionné avec le projet sur GitHub, l'équipe et l'enseignant peuvent rejouer les mêmes tests.

### Variables
@baseUrl = http://localhost:3000

### Lister les groupes
GET {{baseUrl}}/groupes

### Afficher le groupe 1
GET {{baseUrl}}/groupes/1

### Créer un groupe
POST {{baseUrl}}/groupes
Content-Type: application/json

{
  "code": "DEV101",
  "filiere": "Développement"
}

### Modifier le groupe 1
PATCH {{baseUrl}}/groupes/1
Content-Type: application/json

{
  "filiere": "Développement web et mobile"
}

### Supprimer le groupe 1
DELETE {{baseUrl}}/groupes/1

Au-dessus de chaque requête apparaît un lien Send Request: un clic, et la réponse s'affiche dans un panneau à droite. Les requêtes sont séparées par ###; une ligne vide sépare les en-têtes du corps.

4. curl (terminal)
curl http://localhost:3000/groupes
curl -X POST http://localhost:3000/groupes \
     -H "Content-Type: application/json" \
     -d '{"code":"DEV101","filiere":"Développement"}'
curl -i http://localhost:3000/groupes/1      # -i affiche aussi le statut et les en-têtes

Sous Windows PowerShell, curl peut être un alias d'une autre commande : tapez curl.exe. curl est surtout utile sur un serveur sans interface graphique, par exemple pour vérifier une API déployée.

Lire une réponse
  • Statut: 200, 201, 400, 404… (leçon 1.2).
  • En-têtes: Content-Type, X-Powered-By: Express (preuve que NestJS tourne sur Express !).
  • Corps: les données JSON, ou le message d'erreur.
  • Durée: utile pour repérer une route lente.
PostmanThunder ClientFichiers .httpcurl
InstallationApplicationExtension VS CodeExtension VS CodeSouvent déjà présent
InterfaceGraphique complèteGraphiqueTexteLigne de commande
Partage avec GitExport de collectionLimitéNatifScripts
Idéal pourGros projets, équipesTests rapidesTests versionnés, TPServeurs, scripts
Activités

Activité 1 Tester les cinq routes CRUD

Avec l'outil de votre choix, envoyez les cinq requêtes du fichier ci-dessus à la ressource groupes générée. Pour chacune, relevez le statut et le texte renvoyé. Que remarquez-vous ?

Voir le corrigé

Toutes les routes répondent (200, et 201 pour le POST) avec un texte de démonstration (« This action adds a new groupe », « This action returns a #1 groupe »…). Les données ne sont pas encore enregistrées : le service généré ne contient que des messages. Nous le compléterons au chapitre 07.

Activité 2 Un fichier de requêtes versionné

  1. À la racine du projet, créez le dossier requetes/ et le fichier requetes/groupes.http avec les requêtes de la leçon.
  2. Ajoutez une requête vers une route inexistante (GET {{baseUrl}}/inconnu) : quel statut et quel corps obtenez-vous ?
  3. Faites un commit « Requêtes de test de la ressource groupes » et poussez sur GitHub.
Voir le corrigé

La route inexistante renvoie 404 avec le JSON généré automatiquement par NestJS :

{
  "message": "Cannot GET /inconnu",
  "error": "Not Found",
  "statusCode": 404
}

Activité 3 Observer les en-têtes

Avec curl -i ou l'onglet Headers de Postman, relevez les en-têtes de la réponse à GET /groupes. Quel en-tête révèle le serveur HTTP utilisé par NestJS ?

Voir le corrigé

L'en-tête X-Powered-By: Express confirme que NestJS utilise Express par défaut. Pour des raisons de sécurité, on le masquera au chapitre 19 (Helmet).

À retenir

  • Le navigateur n'envoie facilement que des GET : il faut un client d'API.
  • Postman et Thunder Client offrent une interface graphique complète.
  • Les fichiers .http (REST Client) se versionnent avec le projet.
  • curl teste une API depuis un terminal ou un serveur.
  • On vérifie toujours le statut, les en-têtes et le corps de la réponse.