Aller au contenu
SDETRole
SDETRole

Apprendre / Aide-mémoire

Aide-mémoire HTTP pour le test d’API

Ce qu’un testeur doit savoir de HTTP, sur une seule fiche : quelles méthodes sont sûres et idempotentes, quel code de statut chaque situation doit renvoyer, les en-têtes qui méritent une assertion, les options cURL que vous utiliserez tous les jours et une checklist pour chaque réponse.

Vérifié avec Sémantique HTTP selon la RFC 9110 ; Problem Details selon la RFC 9457

Méthodes

MéthodeUsageSûreIdempotente
GET Lire une ressource ou une collection Oui Oui
HEAD Comme GET, en-têtes seulement Oui Oui
OPTIONS Méthodes autorisées ; preflight CORS Oui Oui
POST Créer, ou exécuter une action Non Non
PUT Remplacer toute la ressource Non Oui
PATCH Modifier certains champs Non Non garanti
DELETE Supprimer une ressource Non Oui

Idempotent signifie que répéter la requête laisse le serveur dans le même état. La réponse peut différer : un second DELETE peut renvoyer 404.

Codes de statut à vérifier

CodeSignificationTest typique
200 OK Succès avec un corps GET sur une ressource existante
201 Created Ressource créée POST de données valides ; vérifier l’en-tête Location
204 No Content Succès, corps vide DELETE, ou PUT qui ne renvoie rien
301 / 308 Déplacé définitivement L’ancienne URL redirige ; 308 conserve la méthode
304 Not Modified La copie en cache est toujours valide GET avec If-None-Match: <etag>
400 Bad Request Requête mal formée JSON invalide, mauvais types
401 Unauthorized Non authentifié Token absent ou expiré
403 Forbidden Authentifié, mais non autorisé Accéder à la ressource d’un autre utilisateur
404 Not Found Ressource inexistante Id inconnu (ou masquage d’une ressource que vous ne devez pas voir)
405 Method Not Allowed Mauvaise méthode pour cette URL DELETE sur un endpoint en lecture seule
409 Conflict Conflit avec l’état actuel E-mail en double, version obsolète
415 Unsupported Media Type Format de corps non accepté Envoyer du text/plain à un endpoint JSON
422 Unprocessable Content JSON valide, valeurs invalides Erreurs de validation des règles métier
429 Too Many Requests Limite de débit atteinte Rafale de requêtes ; vérifier Retry-After
500 Internal Server Error Bug côté serveur Jamais attendu : toujours un défaut
502 / 503 / 504 Échec en amont, indisponible, timeout Dépendance en panne ; vérifier les retries

En-têtes à vérifier

En-têteExemplePourquoi
Content-Type application/json; charset=utf-8 Le format de la réponse correspond au corps
Accept application/json Le client demande un format ; attendez un 406 s’il n’est pas pris en charge
Authorization Bearer eyJhbGciOi… Authentification par token ; absent → 401
Location /api/orders/1043 Renseigné sur un 201 Created et sur les redirections
Cache-Control no-store Les données personnelles ou sensibles ne doivent pas être mises en cache
ETag / If-None-Match "a1b2c3" GET conditionnel → 304
Retry-After 30 Envoyé avec un 429 ou un 503
Set-Cookie sid=…; HttpOnly; Secure; SameSite=Lax Les cookies de session exigent HttpOnly et Secure
Access-Control-Allow-Origin https://app.example.com CORS : jamais * pour les requêtes avec identifiants

cURL

TâcheCode
Afficher le statut et les en-têtes curl -i https://api.example.com/users/1
Trace complète requête/réponse curl -v https://api.example.com/users/1
POST de JSON
curl -X POST https://api.example.com/users \
  -H 'Content-Type: application/json' \
  -d '{"email":"qa@example.com"}'
Bearer token curl -H "Authorization: Bearer $TOKEN" https://api.example.com/me
Authentification Basic curl -u user:pass https://api.example.com/admin
Suivre les redirections curl -L https://example.com/old
Seulement le code de statut curl -s -o /dev/null -w '%{http_code}' https://api.example.com/health
Échouer sur 4xx/5xx dans les scripts curl --fail-with-body https://api.example.com/health

Dans cmd sous Windows, remplacez les guillemets simples par des guillemets doubles et échappez ceux qui sont à l’intérieur.

Checklist pour chaque réponse

VérificationExemple
Code de statut Exactement 201, pas « n’importe quel 2xx »
Schéma du corps Champs obligatoires présents, types corrects, aucun champ sensible en trop
Valeurs L’entrée renvoyée correspond ; les champs calculés (totaux, dates) sont justes
En-têtes Content-Type, Location, Cache-Control
Format des erreurs Format d’erreur cohérent (par ex. problem details de la RFC 9457) avec un message utile
Effets de bord L’enregistrement existe, ou non, quand vous le relisez avec un GET
Temps de réponse Dans le budget convenu

S’exercer et approfondir

Autres aide-mémoire

Saisissez un terme pour rechercher sur SDETRole.

Recherche plein texte par Pagefind · s’exécute dans votre navigateur Ouvrir la page de recherche →