202 Accepted
Uso
El código de estado 202 Accepted funciona como un acuse de recibo: el servidor recibió la solicitud y tiene la intención de procesar el envío. En la práctica, esto significa que el servidor validó el formato de la solicitud y colocó el trabajo en una cola interna. La tarea encolada suele ser un proceso de larga duración o parte de una operación por lotes.
No existe ningún mecanismo para que el servidor envíe más adelante una respuesta que indique el resultado final. El cliente es responsable de sondear periódicamente, siempre que el servidor exponga un punto de acceso de estado.
Impacto en SEO
Googlebot espera brevemente el contenido cuando encuentra una respuesta 202. El contenido recibido dentro del periodo de espera pasa a la canalización de indexación, pero no se garantiza su indexación.
En cuanto llega una respuesta de éxito 200, el sondeo se detiene. Otros resultados válidos son 201, cuando se creó un recurso nuevo que está disponible en el URI de la cabecera Location, o 204, cuando el trabajo terminó sin contenido que devolver.
Ejemplo
El cliente envía datos XML que definen un trabajo. El servidor acusa recibo del envío. Las solicitudes posteriores del cliente comprueban si el trabajo ha terminado. Finalmente, el servidor señala que se ha completado.
Solicitud
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>
Respuesta
HTTP/1.1 202 Accepted
Link: </job/status/125>; rel="http://example.re/job-status"
Content-Length: 0
Solicitud de estado 1
GET /job-status/125 HTTP/1.1
Host: example.com
Respuesta
HTTP/1.1 202 Accepted
Content-Length: 0
Solicitud de estado 2
GET /job-status/125 HTTP/1.1
Host: example.com
Respuesta
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 18
{"success":"true"}
Tras recibir el código de estado 200, el cliente deja de sondear y actúa sobre el resultado.
Cuerpo de respuesta en un 202
Una respuesta 202 Accepted puede incluir un cuerpo de mensaje. Ese cuerpo contiene normalmente el estado actual de la solicitud, un enlace a un punto de acceso de supervisión del estado o una estimación de cuándo finalizará la operación. A diferencia del 201, que apunta al recurso creado, el cuerpo de un 202 describe la propia operación pendiente.
202 frente a 201
Una respuesta 201 confirma que se creó un recurso y que está disponible de inmediato. Una respuesta 202 confirma que la solicitud se recibió, pero que el procesamiento no ha terminado. Use 201 cuando el recurso ya exista en el momento de la respuesta. Use 202 cuando el trabajo esté encolado o sea asíncrono y el resultado final aún no se conozca.
Referencias de código
.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