204 No Content
Utilisation
Le code de statut 204 No Content est renvoyé en réponse à une opération POST, PUT ou DELETE pour laquelle aucun corps de message n’est attendu. Certains serveurs renvoient à la place un 200 avec un corps vide et un Content-Length de 0.
Un cas d’usage concret est le résultat de la soumission d’un formulaire lorsque l’utilisateur appuie sur un bouton « Enregistrer ». Le serveur valide les modifications et compte sur le client pour informer l’utilisateur du succès de l’opération.
Le serveur ne doit pas inclure de corps de message dans une réponse 204. Des en-têtes comme Cache-Control et ETag sont tout de même envoyés et s’appliquent au document identifié par la requête.
Le statut apparenté 205 Reset Content ne renvoie lui non plus aucun corps, mais demande en outre au client de réinitialiser la vue du document (par exemple en vidant un formulaire après son envoi). Un GET conditionnel renvoie un 304 pour signaler que la ressource n’a pas besoin d’être récupérée à nouveau.
Remarque
Un DELETE renvoyant un 204 est le modèle le plus courant pour une suppression simple de ressource lorsqu’aucun corps de réponse n’est nécessaire. Renvoyez plutôt un 200 lorsque la réponse contient des détails de confirmation ou la représentation de la ressource supprimée. Un PUT renvoyant un 204 est courant lorsque la mise à jour réussit et que le client n’a pas besoin qu’on lui renvoie la représentation mise à jour. 204 signifie « succès, rien à afficher », tandis que 404 signifie « ressource introuvable ». Une requête sur une collection vide renvoie un 200 avec un tableau vide, et non un 204.
Impact SEO
Google ne peut pas traiter une réponse 204, car aucun contenu n’est reçu. Une URL qui renvoie systématiquement un 204 n’apparaîtra pas dans les résultats de recherche.
Exemple
Le client envoie au serveur des données XML définissant une tâche. Le serveur répond en confirmant que les données ont été acceptées et que la tâche est terminée. Aucun contenu n’a besoin d’être renvoyé, ce qui rend le code de statut 204 No Content approprié.
Requête
POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68
<?xml version="1.0"?>
<job>
<id>125</id>
<task>G01</task>
</job>
Réponse
HTTP/1.1 204 No Content
Références de code
.NET
HttpStatusCode.NoContent
Rust
http::StatusCode::NO_CONTENT
Rails
:no_content
Go
http.StatusNoContent
Symfony
Response::HTTP_NO_CONTENT
Python3.5+
http.HTTPStatus.NO_CONTENT
Java
java.net.HttpURLConnection.HTTP_NO_CONTENT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
Angular
@angular/common/http/HttpStatusCode.NoContent