202 Accepted
Utilisation
Le code de statut 202 Accepted fait office d’accusé de réception : le serveur a reçu la requête et a l’intention de traiter la soumission. En pratique, cela signifie que le serveur a validé le format de la requête et a placé le travail dans une file d’attente interne. La tâche mise en file d’attente correspond souvent à un traitement de longue durée ou à une partie d’une opération par lots.
Aucun mécanisme ne permet au serveur d’envoyer ultérieurement une réponse indiquant l’issue finale. Il revient au client d’interroger périodiquement le serveur, à condition que celui-ci expose un point de terminaison de statut.
Impact SEO
Googlebot attend brièvement le contenu lorsqu’il rencontre une réponse 202. Le contenu reçu pendant ce délai d’attente est transmis au pipeline d’indexation, mais l’indexation n’est pas garantie.
Dès qu’une réponse de succès 200 arrive, l’interrogation cesse. Les autres issues valides incluent 201 lorsqu’une nouvelle ressource a été créée et est disponible à l’URI indiqué dans l’en-tête Location, ou 204 lorsque la tâche s’est terminée sans contenu à renvoyer.
Exemple
Le client envoie des données XML définissant une tâche. Le serveur accuse réception de la soumission. Les requêtes suivantes du client vérifient si le travail est terminé. Finalement, le serveur signale l’achèvement.
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 202 Accepted
Link: </job/status/125>; rel="http://example.re/job-status"
Content-Length: 0
Requête de statut 1
GET /job-status/125 HTTP/1.1
Host: example.com
Réponse
HTTP/1.1 202 Accepted
Content-Length: 0
Requête de statut 2
GET /job-status/125 HTTP/1.1
Host: example.com
Réponse
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"success":"true"}
Après l’arrivée du code de statut 200, le client cesse d’interroger et exploite le résultat.
Corps de réponse dans un 202
Une réponse 202 Accepted est autorisée à inclure un corps de message. Ce corps contient généralement l’état actuel de la requête, un lien vers un point de terminaison de suivi de statut, ou une estimation de la date d’achèvement de l’opération. Contrairement à 201, qui pointe vers la ressource créée, le corps d’un 202 décrit l’opération en cours elle-même.
202 comparé à 201
Une réponse 201 confirme qu’une ressource a été créée et est immédiatement disponible. Une réponse 202 confirme que la requête a été reçue mais que le traitement n’est pas terminé. Utilisez 201 lorsque la ressource existe au moment de la réponse. Utilisez 202 lorsque le travail est mis en file d’attente ou asynchrone et que l’issue finale n’est pas encore connue.
Références de code
.NET
HttpStatusCode.Accepted
Rust
http::StatusCode::ACCEPTED
Rails
:accepted
Go
http.StatusAccepted
Symfony
Response::HTTP_ACCEPTED
Python3.5+
http.HTTPStatus.ACCEPTED
Java
java.net.HttpURLConnection.HTTP_ACCEPTED
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_ACCEPTED
Angular
@angular/common/http/HttpStatusCode.Accepted