Árbol de Decisión
Comienza aquí y sigue el camino que se ajuste a tu situación.
La solicitud fue exitosa?
Si y devuelvo datos -> 200 OK
Respuesta de éxito predeterminada. Usa para solicitudes GET que devuelven datos, solicitudes POST que realizan acciones y solicitudes PUT/PATCH que actualizan y devuelven el resultado.
Si y cree un nuevo recurso -> 201 Created
Usa después de que POST o PUT hayan creado algo nuevo. Incluye un encabezado Location con la URL del nuevo recurso.
Si pero no hay cuerpo que devolver -> 204 No Content
Usa para solicitudes DELETE exitosas o PUT/PATCH donde el cliente no necesita el recurso actualizado. La respuesta no tiene cuerpo.
Si pero ya lo habia hecho -> 200 OK o 204 No Content
Para operaciones idempotentes (PUT, DELETE) donde el estado final es el mismo sin importar cuantas veces se llame, devuelve el mismo código de éxito que devolverias en la primera llamada.
Aceptado pero aún no terminado -> 202 Accepted
Usa cuando el servidor ha puesto en cola la solicitud para procesamiento asincrono. El cliente debe hacer polling o recibir un callback más tarde. Bueno para trabajos largos, operaciones por lotes o entregas de webhooks.
El cliente necesita ir a otro lugar?
Mudanza permanente -> 301 Moved Permanently
El recurso tiene una nueva URL permanentemente. Los navegadores y motores de busqueda actualizan sus registros. Seguro para solicitudes GET. Nota: algunos clientes antiguos cambian POST a GET en la redirección.
Mudanza permanente, conservar método -> 308 Permanent Redirect
Cómo 301, pero garantiza que el método HTTP se conserva. Un POST sigue siendo POST. Usa cuando la conservación del método es importante (redirecciones de API).
Mudanza temporal -> 302 Found
El recurso esta temporalmente en una URL diferente. Los navegadores lo almacenan en cache para la sesión pero lo verifican de nuevo más tarde. En la práctica, la redirección temporal más comun.
Mudanza temporal, conservar método -> 307 Temporary Redirect
Cómo 302, pero conserva el método HTTP.