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:

  1. 1xx (Informativos): Indican que la solicitud ha sido recibida y el proceso continúa.
  2. 2xx (Éxito): Indican que la solicitud ha sido recibida, entendida y aceptada correctamente.
  3. 3xx (Redirección): Indican que se deben tomar acciones adicionales para completar la solicitud.
  4. 4xx (Errores del Cliente): Indican que la solicitud contiene sintaxis incorrecta o no puede ser procesada.
  5. 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:

  1. Un cliente intenta acceder a un recurso que no existe en el servidor.
  2. Un cliente envía una solicitud para crear un nuevo recurso y el servidor lo crea exitosamente.
  3. Un cliente envía una solicitud con datos incorrectos y el servidor no puede procesarla.

Soluciones

  1. 404 Not Found: El recurso solicitado no ha sido encontrado en el servidor.
  2. 201 Created: La solicitud ha tenido éxito y se ha creado un nuevo recurso.
  3. 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.

© Copyright 2024. Todos los derechos reservados