Los códigos de estado HTTP son respuestas estándar proporcionadas por los servidores web en respuesta a las solicitudes HTTP realizadas por los clientes (navegadores, aplicaciones, etc.). Estos códigos indican si una solicitud HTTP específica ha sido completada con éxito o si ha ocurrido algún error. Comprender estos códigos es esencial para diseñar y desarrollar APIs RESTful efectivas.
Clasificación de los Códigos de Estado HTTP
Los códigos de estado HTTP se dividen en cinco categorías principales:
- 1xx (Informativos): Indican que la solicitud ha sido recibida y el proceso continúa.
- 2xx (Éxito): Indican que la solicitud ha sido recibida, entendida y aceptada correctamente.
- 3xx (Redirección): Indican que se deben tomar acciones adicionales para completar la solicitud.
- 4xx (Errores del Cliente): Indican que la solicitud contiene sintaxis incorrecta o no puede ser procesada.
- 5xx (Errores del Servidor): Indican que el servidor falló al cumplir con una solicitud aparentemente válida.
Códigos de Estado Comunes
2xx: Éxito
- 200 OK: La solicitud ha tenido éxito. Este es el código de estado más común para respuestas exitosas.
- 201 Created: La solicitud ha tenido éxito y se ha creado un nuevo recurso. Se utiliza comúnmente en respuestas a solicitudes POST.
- 204 No Content: La solicitud ha tenido éxito, pero no hay contenido que devolver. Se utiliza comúnmente en respuestas a solicitudes DELETE.
3xx: Redirección
- 301 Moved Permanently: El recurso solicitado ha sido movido permanentemente a una nueva URI.
- 302 Found: El recurso solicitado reside temporalmente en una URI diferente.
- 304 Not Modified: El recurso no ha sido modificado desde la última solicitud. Se utiliza para optimizar el uso del caché.
4xx: Errores del Cliente
- 400 Bad Request: La solicitud no puede ser procesada debido a una sintaxis incorrecta.
- 401 Unauthorized: La solicitud requiere autenticación del usuario.
- 403 Forbidden: El servidor entiende la solicitud, pero se niega a autorizarla.
- 404 Not Found: El recurso solicitado no ha sido encontrado en el servidor.
5xx: Errores del Servidor
- 500 Internal Server Error: El servidor encontró una condición inesperada que le impidió cumplir con la solicitud.
- 502 Bad Gateway: El servidor, actuando como puerta de enlace o proxy, recibió una respuesta inválida del servidor upstream.
- 503 Service Unavailable: El servidor no está disponible temporalmente, generalmente debido a mantenimiento o sobrecarga.
Ejemplos Prácticos
Ejemplo 1: Código 200 OK
GET /api/products HTTP/1.1 Host: example.com HTTP/1.1 200 OK Content-Type: application/json [ { "id": 1, "name": "Product 1", "price": 19.99 }, { "id": 2, "name": "Product 2", "price": 29.99 } ]
Ejemplo 2: Código 201 Created
POST /api/products HTTP/1.1 Host: example.com Content-Type: application/json { "name": "New Product", "price": 39.99 } HTTP/1.1 201 Created Location: /api/products/3
Ejemplo 3: Código 404 Not Found
GET /api/products/999 HTTP/1.1 Host: example.com HTTP/1.1 404 Not Found Content-Type: application/json { "error": "Product not found" }
Ejercicio Práctico
Ejercicio 1: Identificar Códigos de Estado
Dado el siguiente escenario, identifica el código de estado HTTP apropiado:
- Un cliente intenta acceder a un recurso que no existe en el servidor.
- Un cliente envía una solicitud para crear un nuevo recurso y el servidor lo crea exitosamente.
- Un cliente envía una solicitud con datos incorrectos y el servidor no puede procesarla.
Soluciones
- 404 Not Found: El recurso solicitado no ha sido encontrado en el servidor.
- 201 Created: La solicitud ha tenido éxito y se ha creado un nuevo recurso.
- 400 Bad Request: La solicitud no puede ser procesada debido a una sintaxis incorrecta.
Conclusión
Los códigos de estado HTTP son fundamentales para la comunicación entre clientes y servidores en el contexto de las APIs RESTful. Conocer y utilizar correctamente estos códigos permite a los desarrolladores proporcionar respuestas claras y precisas a las solicitudes, mejorando la experiencia del usuario y facilitando el manejo de errores. En el próximo tema, exploraremos cómo versionar nuestras APIs para mantener la compatibilidad y mejorar la evolución de nuestros servicios.
Curso de REST API: Principios de Diseño y Desarrollo de APIs RESTful
Módulo 1: Introducción a las APIs RESTful
Módulo 2: Diseño de APIs RESTful
- Principios de diseño de APIs RESTful
- Recursos y URIs
- Métodos HTTP
- Códigos de estado HTTP
- Versionado de APIs
- Documentación de APIs
Módulo 3: Desarrollo de APIs RESTful
- Configuración del entorno de desarrollo
- Creación de un servidor básico
- Manejo de peticiones y respuestas
- Autenticación y autorización
- Manejo de errores
- Pruebas y validación
Módulo 4: Buenas Prácticas y Seguridad
- Buenas prácticas en el diseño de APIs
- Seguridad en APIs RESTful
- Rate limiting y throttling
- CORS y políticas de seguridad
Módulo 5: Herramientas y Frameworks
- Postman para pruebas de APIs
- Swagger para documentación
- Frameworks populares para APIs RESTful
- Integración continua y despliegue