Introducción
En el post anterior de Resolviendo dudas sobre HTTP, exploramos el concepto del protocolo HTTP y revisamos los métodos más comunes para interactuar con diferentes recursos. Como mencioné, la conversación con mi compañero se extendió bastante cuando profundizamos en los status codes que queríamos devolver en las respuestas de cada operación.
En esta ocasión, os hablaré sobre algunos de los códigos de estado más importantes, cómo utilizarlos correctamente y, para hacerlo más ameno, me apoyaré en una web bastante entretenida.
Códigos de estado más comunes
¿Qué son los códigos de estado en las respuestas HTTP?
Los códigos de estado indican si una petición HTTP se ha completado correctamente. Sin embargo, no siempre es tan sencillo como parece (¡ya veremos por qué más adelante!). Para empezar, los códigos se agrupan en cinco categorías, cada una representando un rango numérico y un propósito específico:
- Respuestas informativas: códigos entre 100 y 199.
- Respuestas satisfactorias: códigos entre 200 y 299.
- Redirecciones: códigos entre 300 y 399.
- Errores del cliente: códigos entre 400 y 499.
- Errores del servidor: códigos entre 500 y 599.
Ahora que conocemos estas categorías, vamos a explorar los códigos más comunes de cada grupo.
Códigos informativos
- 100 Continue: Indica que todo está correcto y que el cliente puede continuar con su solicitud.
- 101 Switching Protocol: El servidor acepta cambiar al protocolo solicitado por el cliente.
- 102 Processing: Señala que el servidor sigue procesando la solicitud, útil para operaciones prolongadas.
- 103 Early hints: Permite al cliente comenzar a precargar recursos mientras el servidor prepara la respuesta definitiva.
Códigos satisfactorios
Aunque hay muchos códigos en esta categoría, aquí están los más destacados:
- 200 Ok: Significa que la solicitud ha tenido éxito, aquí depende del verbo de la petición significa una cosa u otra:
- GET: el servidor a encontrado los datos y los ha retornado en el body de la respuesta.
- POST: el servidor ha recibido el cuerpo de la petición.
- 201 Created: Este código indica que el recurso se ha creado de forma satisfactoria.
- 202 Accepted: Es un código que indica que la petición ha sido aceptada por parte del servidor pero que aún no la está procesando.
- 204 No content: Este indica que la petición ha sido existosa pero la respuesta no contiene datos en el body.
Redirecciones
- 301 Moved Permanently: Indica que la petición se ha hecho a un recurso que ahora está en otra URI. Dicha url es enviada en la respuesta para que se pueda volver a hacer la petición a la nueva. Es posible que el método sea diferente en la nueva URI.
- 307 Temporary Redirect: Esta respuesta la envía el servidor para pedir al cliente que vuelva a hacer la solicitud a otra URI con el mismo método que se usó la petición anterior.
- 308 Permanent Redirect: Significa que el recurso ahora se encuentra permanentemente en otra URI, especificada por la respuesta de encabezado HTTP. Es muy parecido al 301 pero esta vez el método debe ser el mismo que la petición anterior.
Errores en el cliente
- 400 Bad Request: Se responde con este código de error cuando el servidor no es capaz de interpretar lo datos enviados por el cliente, por ejemplo en una petición POST donde el body tiene datos que no se esperan.
- 401 Unauthorized: Este código indica que se necesita algún tipo de autenticación para obtener la respuesta del servidor.
- 403 Forbidden: En este caso aunque es parecido al 401: con este código le indicamos que aunque esté autenticado no tiene autorización para realizar esa operación.
- 404 Not found: ¿Quién no ha visto este error al menos una vez en su vida? Indica que el recurso que se ha solicitado no existe
Errores del servidor
- 500 Internal Server Error: El servidor ha encontrado un problema, una excepción que no sabe manejar.
- 502 Bad Gateway: Este error suele aparecer cuando entre el cliente y el servidor hay un intermediario, normalmente un proxy. Indica que el servidor intermediario recibió una respuesta inválida o inesperada del servidor final que está intentando acceder.
- 504 Gateway Timeout: Se obtiene este tipo de error cuando se ha acabado el tiempo de conexión entre el cliente y el servidor porque el servidor no ha sido capaz de responder a tiempo.
Conclusión
Como podéis ver, existe una amplia variedad de códigos de estado para las respuestas HTTP. En este post hemos cubierto los más comunes, pero hay muchos más. Si queréis seguir aprendiendo de forma entretenida, visitad esta página de adorables gatitos y perritos. Y, como siempre, el mejor lugar para profundizar es la documentación oficial de HTTP. 🐾