HTTPQUERY
Español

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