4.6. Utilisation des codes d'état HTTP
4.6. Utilisation des codes d'état HTTP
Les applications qui utilisent HTTP DOIVENT uniquement utiliser des codes d'état HTTP enregistrés. Elles DEVRAIENT utiliser le code d'état le plus spécifique applicable, bien qu'elles ne soient pas limitées à ceux définis dans [HTTP]; d'autres codes d'état peuvent être utilisés tant qu'ils sont enregistrés dans le registre "HTTP Status Codes".
Lors de la spécification de l'utilisation des codes d'état, les applications DEVRAIENT se concentrer sur leur sémantique générique plutôt que sur leur signification spécifique dans un contexte particulier. Par exemple, il est approprié de dire:
Si la requête réussit, le serveur envoie une réponse
200 OK.
mais pas:
Le serveur envoie une réponse
200 OKlorsque l'utilisateur est authentifié et autorisé à accéder à la ressource.
Ce dernier est trop spécifique car il confond plusieurs choses: succès, authentification et autorisation. Une déclaration plus appropriée serait:
Si la requête est réussie, le serveur envoie une réponse
200 OK. Si l'authentification est requise mais non fournie, le serveur envoie une réponse401 Unauthorized. Si le client n'est pas autorisé à accéder à la ressource, le serveur envoie une réponse403 Forbidden.
Les applications NE DEVRAIENT PAS définir de nouveaux codes d'état. Dans les rares cas où un nouveau code d'état est vraiment nécessaire, il DOIT être enregistré en suivant la procédure de [HTTP] Section 16.2.
Lors du choix d'un code d'état, le principe général est de sélectionner le plus spécifique qui s'applique. Le code d'état devrait transmettre la raison principale de la réponse.
Par exemple, si une requête échoue parce que la ressource n'existe pas, 404 Not Found est approprié. Si elle échoue parce que le client n'est pas autorisé à y accéder, 403 Forbidden est approprié, même si la ressource pourrait ne pas exister.
Les applications DEVRAIENT utiliser les codes d'état suivants de manière appropriée:
-
200 OKpour les requêtes réussies où la réponse contient une représentation. -
201 Createdpour les requêtes réussies qui entraînent la création d'une nouvelle ressource. -
202 Acceptedpour les requêtes qui ont été acceptées pour traitement mais où le traitement n'a pas été achevé. -
204 No Contentpour les requêtes réussies où il n'y a pas de représentation à envoyer. -
301 Moved Permanentlyou308 Permanent Redirectpour les ressources qui ont déménagé de façon permanente. -
302 Foundou307 Temporary Redirectpour les ressources qui ont déménagé temporairement. -
304 Not Modifiedpour les requêtes conditionnelles où la ressource n'a pas changé. -
400 Bad Requestpour les requêtes malformées. -
401 Unauthorizedpour les requêtes qui nécessitent une authentification. -
403 Forbiddenpour les requêtes où le client n'est pas autorisé. -
404 Not Foundpour les requêtes vers des ressources inexistantes. -
405 Method Not Allowedpour les requêtes utilisant une méthode inappropriée. -
406 Not Acceptablelorsque le serveur ne peut pas générer une représentation que le client acceptera. -
409 Conflictlorsque la requête entre en conflit avec l'état actuel de la ressource. -
410 Gonepour les ressources qui existaient mais ont été supprimées de façon permanente. -
415 Unsupported Media Typelorsque leContent-Typede la requête n'est pas pris en charge. -
500 Internal Server Errorpour les erreurs côté serveur. -
501 Not Implementedlorsque le serveur ne prend pas en charge la fonctionnalité demandée. -
503 Service Unavailablelorsque le serveur est temporairement incapable de traiter la requête.