Comprensión de mensajes HTTP: solicitudes, respuestas, métodos y códigos de estado

Mensajes de solicitud y respuesta en HTTP

Un mensaje de solicitud HTTP es la información enviada por el cliente al servidor. Consta de cuatro componentes esenciales:

  1. Línea de solicitud: Incluye el método HTTP, la ruta del recurso solicitado y la versión del protocolo.
  2. Encabezados de solicitud: Proporcionan metadatos cruciales para el procesamiento de la comunicación entre cliente y servidor.
  3. Línea vacía: Separa los encabezados del cuerpo, siendo obligatoria incluso si no hay cuerpo de solicitud.
  4. Cuerpo de solicitud: Contiene los datos enviados. No siempre está presente.

Relevancia según el método:

  • Los métodos como GET transmiten datos a través de parámetros en la URL, sin incluir cuerpo.
  • Métodos como POST envían datos dentro del cuerpo de la solicitud.

Ejemplo de solicitud GET


GET /recursos/usuarios?nombre=Ana&id=42 HTTP/1.1
Host: api.ejemplo.com
Accept: application/json

Ejemplo de solicitud POST


POST /recursos/nuevo-usuario HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
Content-Length: 32

{
  "nombre": "Ana",
  "id": 42
}

Un mensaje de respuesta HTTP es la información devuelta por el servidor tras procesar una solicitud. Se compone de:

  1. Línea de estado: Contiene la versión del protocolo, el código de estado y su descripción textual.
  2. Encabezados de respuesta: Proporcionan información adicional sobre la respuesta y el servidor.
  3. Línea vacía: Delimita los encabezados del cuerpo de la respuesta.
  4. Cuerpo de respuesta: Contiene el recurso solicitado o los datos de la operación realizada.

Ejemplo de respuesta exitosa


HTTP/1.1 200 OK
Date: Mon, 15 Jan 2024 09:30:00 GMT
Server: nginx/1.24.0
Content-Type: application/json; charset=utf-8
Content-Length: 47

{
  "mensaje": "Operación exitosa",
  "datos": []
}

Métodos de solicitud HTTP

Los métodos HTTP definen la operación a realizar sobre un recurso. A continuación se describen los más relevantes:

  • GET: Recupera representaciones de recursos. No debe alterar el estado del servidor.
  • HEAD: Similar a GET, pero solo devuelve los encabezados sin el cuerpo. Útil parra verificar la existencia o metadatos de un recurso.
  • POST: Envía datos al servidor, típicamente para crear un nuevo subordinado o recurso.
  • PUT: Reemplaza completamente la representación del recurso de destino con la carga útil de la solicitud.
  • PATCH: Aplica modificaciones parciales a un recurso existente.
  • DELETE: Elimina el recurso especificado.
  • OPTIONS: Describe las opciones de comunicación para el recurso de destino, incluyendo los métodos permitidos.

Distinciones clave entre GET y POST

  • Propósito semántico: GET es para recuperación, POST es para creación o procesamiento que modifica datos.
  • Transmisión de parámetros: GET incluye datos en la URL. POST generalmente los incluye en el cuerpo.
  • Limitaciones de tamaño: GET está restringido por la longitud máxima de la URL. POST teóricamente soporta cargas mayores.
  • Consideraciones de seguridad: GET expone datos en la URL, visible en historiales y logs. POST oculta los datos del cuerpo, aunque la seguridad real depende de la implementación (ej. HTTPS).

Códigos de estado HTTP

Los códigos de estado son dígitos de tres cifras que indican el resultado de la solicitud del cliente. Se agrupan en clases según su primer dígito:

Clasificación principal

Rango Clase Significado general
1xx Informativo La solicitud fue recibida, el proceso continúa.
2xx Éxito La solicitud fue recibida, comprendida y aceptada.
3xx Redirección Se requiere una acción adicional para completar la solicitud.
4xx Error del cliente La solicitud contiene sintaxis incorrecta o no puede ser procesada.
5xx Error del servidor El servidor falló al procesar una solicitud válida.

Códigos de uso frecuente

  • 200 OK: La solicitud ha tenido éxito.
  • 201 Created: La solicitud ha resultado en la creación de un nuevo recurso (común con POST).
  • 301 Moved Permanently: El recurso solicitado ha sido asignado permanentemente a un nuevo URI.
  • 302 Found: Redirección temporal. El recurso reside temporalmente en un URI diferente.
  • 304 Not Modified: Usado para condicionalidades de caché. Indica que el recurso no ha sido modificado.
  • 307 Temporary Redirect: Redirección temporal que garantiza que el método de solicitud no cambie.
  • 400 Bad Request: La solicitud no pudo ser entendida por el servidor debido a sintaxis inválida.
  • 401 Unauthorized: La solicitud requiere autenticación del usuario.
  • 403 Forbidden: El servidor entendió la solicitud, pero se niega a autorizarla.
  • 404 Not Found: El servidor no pudo encontrar un recurso coincidente con el URI proporcionado.
  • 500 Internal Server Error: El servidor encontró una condición inesperada que le impidió cumplir con la solicitud.
  • 503 Service Unavailable: El servidor no puede procesar la solicitud debido a una sobrecarga temporal o mantenimiento.

Etiquetas: HTTP protocolo web códigos de estado métodos HTTP API REST

Publicado el 7-27 06:10