Les codes de statut HTTP courants dans les entretiens techniques

Introduction aux codes de statut HTTP

Les codes de statut HTTP (Status Code) servent à indiquer le résultat d'une requête du client par le serveur. Dans les entretiens techniques, ils sont généralement classés en cinq catégories principales.

1xx : Information

Ces codes signalent que la requête a été reçue et que le traitement continue. Ils sont rarement rencontrés en développement pratique.

  • 100 Continue : Le client peut envoyer le corps de la requête. Utile pour les transferts de fichiers volumineux.

2xx : Succès

La requête a été traitée avec succès.

  • 200 OK : Requête réussie, le serveur retourne les données demendées.
  • 201 Created : Requête réussie avec création d'une nouvelle ressource, typiquement après une requête POST (par exemple, l'enregistrement d'un nouvel utilisateur).
  • 204 No Content : Requête réussie mais aucun contenu renvoyé. Souvent utilisé pour les suppressions ou les mises à jour simples.

3xx : Redirection

Une action suplémentaire est nécessaire pour compléter la requête.

  • 301 Moved Permanently : L'adresse de la ressource a changé de façon permanente, par exemple lors d'un changement de domaine.
  • 302 Found : Redirection temporaire, comme une redirection vers une page de connexion après une session expirée.
  • 304 Not Modified : La ressource n'a pas été modifiée ; le client peut utiliser le cache. Cela optimise la bande passante et accélère le chargement.

4xx : Erreur du client

Ces codes indiquent une erreur dans la requête du client. C'est la catégorie la plus fréquente.

  • 400 Bad Request : Format de requête incorrect, par exemple envoi de données texte au lieu de JSON.
  • 401 Unauthorized : Authentification requise ou échouée, comme un token invalide.
  • 403 Forbidden : Accès refusé malgré l'authentification, par exemple un utilisateur standard tentant d'accéder à une zone administrateur.
  • 404 Not Found : Ressource introuvable, due à une URL erronée ou une suppression définitive.
  • 405 Method Not Allowed : Méthode HTTP non supportée, par exemple utilisation de POST sur une API ne acceptant que GET.

5xx : Erreur du serveur

Ces codes signalent un problème côté serveur, nécessitant souvent une intervention technique.

  • 500 Internal Server Error : Erreur interne du serveur, comme un bug dans le code, une exception non gérée ou une panne de connexion à la base de données.
  • 502 Bad Gateway : Erreur de passerelle, typiquement quand Nginx ne peut pas contacter un service backend (par exemple, un service Python ou Java indisponible).
  • 503 Service Unavailable : Serveur temporairement indisponible, souvent dû à une surcharge ou à une maintenance.
  • 504 Gateway Timeout : Délai d'attente dépassé pour la réponse du serveur backend, par exemple lors d'une requête longue comme une recherche dans une grande base de données.

Analyse technique : Le code 200 garantit-il un fonctionnement correct ?

Dans un entretien, on peut demander si un code de statut HTTP 200 signifie toujours que tout fonctionne bien. Voici une réponse technique détaillée.

Niveau HTTP : 200 indique uniquement le succès de la requête

Non, un code HTTP 200 ne garantit pas l'absence d'erreurs métier. Il signifie que la requête a été traitée avec succès par le serveur, mais le contenu retourné peut contenir des erreurs logiques.

Exemple de réponse avec un code HTTP 200 mais une erreur métier :

{
  "status": 200,
  "erreur": "Échec de l'accès à la base de données",
  "donnees": null
}

Ici, le code HTTP est 200, mais l'opération a échoué en raison d'une erreur applicative.

Niveau métier : Systèmes utilisant des codes internes avec HTTP 200

De nombreux systèmes distinguent le code HTTP (succès réseau) du code métier (succès applicatif). Par exemple :

{
  "reponseCode": 0,
  "message": "Opération réussie",
  "resultat": {...}
}
ou
{
  "reponseCode": 5001,
  "message": "Utilisateur non trouvé",
  "resultat": null
}
Code HTTP Code métier Signification
200 reponseCode = 0 Succès complet
200 reponseCode != 0 Échec métier malgré une requête réussie

Ainsi, un code HTTP 200 ne garantit pas le succès des opérations métier.

Cas pratiques en développement

  • Cas 1 : Erreur métier avec code 200 - Par exemple, une tentative de connexion échouée : ``` { "reponseCode": 1002, "detail": "Identifiants incorrects" }
    
     Le code HTTP reste 200 car la requête elle-même est valide, mais l'authentification a échoué.
    
  • Cas 2 : Erreur logique avec code 200 - Un code backend peut capturer des exceptions et renvoyer une réponse structurée : ``` try { chercherUtilisateur(id); } catch (Exception e) { return { "reponseCode": 500, "message": "Erreur de base de données" }; }
    
     Le code HTTP est 200, mais l'opération a échoué en raison d'une exception.
    
  • Cas 3 : Données incohérentes - Une API peut renvoyer des données valides mais incorrectes : ``` { "utilisateurId": 1, "solde": -50000 }
    
     Le code HTTP est 200, mais la valeur négative indique une possible erreur dans la logique de calcul.
    
    

En résumé, un développeur doit toujours vérifier à la fois le code HTTP et les données retournées pour diagnostiquer les problèmes.

Étiquettes: HTTP Codes de statut Développement Web API REST Entretiens techniques

Publié le 10 juin à 18h08