Learning Center
Programación en Python

Comprender las solicitudes HTTP: estructura, métodos y ejemplos

10 dic 2025
Hostman Team
Hostman Team

HTTP es la clave de la comunicación en Internet. Los métodos del protocolo HTTP permiten que los clientes envíen solicitudes a los servidores y que los servidores envíen respuestas. Cada sitio web en la World Wide Web utiliza solicitudes HTTP, por lo que es fundamental comprenderlas.

Este artículo explora el concepto de solicitudes HTTP, su estructura, los métodos más comunes y ejemplos prácticos, lo que ayuda a entender cómo funciona la web.

¿Qué es una solicitud HTTP?
Copiar enlace

Una solicitud HTTP es un mensaje en el que un cliente —como un navegador web— solicita un recurso específico al host ubicado en un servidor. Los clientes utilizan URLs en las solicitudes HTTP, que indican qué recursos desean obtener del servidor.

Componentes de una solicitud HTTP
Copiar enlace

Cada solicitud HTTP se compone de tres elementos principales:

  • Request line (línea de solicitud)

  • Headers (cabeceras)

  • Message body (cuerpo del mensaje)

Request Line
Copiar enlace

La request line es la primera línea de una solicitud HTTP. Inicia una acción en el servidor. También indica qué método HTTP y qué versión del protocolo utiliza el cliente. Además del método, la request line incluye una URI o URL.

Ejemplo:

GET /index.html HTTP/1.1

3.2 Headers
Copiar enlace

Las cabeceras siguen justo después de la línea de solicitud. Proporcionan información adicional del cliente al servidor. Incluyen datos como el host, el user agent, preferencia de idioma, codificación, entre otros. El servidor usa esta información para identificar el navegador y el sistema operativo del cliente.

Las cabeceras HTTP son sensibles a mayúsculas y minúsculas, y tienen el formato Nombre: Valor.

Ejemplo de cabeceras HTTP:

Host: example.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36

Accept: application/json, text/plain, */*

Accept-Language: en-US,en;q=0.9

Accept-Encoding: gzip, deflate, br

Connection: keep-alive

Message Body
Copiar enlace

El cuerpo del mensaje se utiliza para enviar datos al servidor. Es opcional: no todas las solicitudes HTTP incluyen un body. Depende del tipo de solicitud. Las solicitudes que sí incluyen un body suelen usar POST. El servidor utiliza ese contenido para procesar los datos enviados.

Métodos HTTP más comunes
Copiar enlace

Una solicitud HTTP sirve para conectar el cliente con el servidor. 

Los motivos pueden ser:

  • obtener un recurso

  • enviar datos

  • actualizar información

  • eliminar recursos

Estos son los métodos más utilizados:

GET – Obtener recursos
Copiar enlace

El método GET se usa para solicitar recursos al servidor. Cada vez que un usuario abre un sitio web, el navegador envía una solicitud GET para obtener el contenido necesario.

Características:

  • cacheable

  • safe

  • idempotent

GET solo obtiene datos —no modifica nada en el servidor.

POST – Enviar datos
Copiar enlace

Cuando el cliente necesita enviar información al servidor (formularios, uploads), se usa POST.

El body contiene los datos enviados. Varias solicitudes POST idénticas pueden crear múltiples recursos en el servidor.

PUT – Actualizar recursos
Copiar enlace

PUT es similar a POST, pero su propósito es diferente:

  • POST = crear nuevos datos

  • PUT = reemplazar datos existentes

El cliente debe especificar la URL del recurso que desea actualizar. PUT es idempotente: ejecutar la misma solicitud varias veces produce el mismo resultado.

DELETE – Eliminar recursos
Copiar enlace

DELETE permite que el cliente solicite la eliminación de un recurso específico.

Si el servidor lo elimina correctamente, devuelve una confirmación. DELETE también es idempotente.

¿Qué es una respuesta HTTP?
Copiar enlace

Cuando el servidor envía una respuesta a una solicitud HTTP, esto se denomina respuesta HTTP. Al igual que una solicitud, tiene tres componentes:

  • Status line (línea de estado)

  • Headers (cabeceras)

  • Body (cuerpo)

Status Line
Copiar enlace

Contiene:

  • versión de HTTP

  • código de estado

  • mensaje del estado

Headers
Copiar enlace

Incluyen información como:

  • fecha y hora

  • tipo de contenido

  • detalles del servidor

  • instrucciones de caché

Body
Copiar enlace

El contenido real enviado por el servidor, por ejemplo:

  • HTML

  • JSON

  • XML

  • imágenes

  • archivos

Códigos de estado y su significado
Copiar enlace

Los códigos de estado HTTP indican el resultado de la solicitud. Cada código tiene tres cifras, y la primera indica su categoría:

Grupo

Descripción

1xx

Informativo — la solicitud continúa procesándose

2xx

Éxito — la solicitud se procesó correctamente

3xx

Redirección — hace falta otra acción

4xx

Error del cliente — la solicitud es incorrecta

5xx

Error del servidor — fallo al procesar la solicitud

Cabeceras HTTP y su importancia
Copiar enlace

Las cabeceras proporcionan información esencial para la comunicación entre cliente y servidor. Son fundamentales para el funcionamiento de la web.

Identificación del host
Copiar enlace

Indican qué dominio está gestionando el servidor.

Caching
Copiar enlace

Cabeceras como Cache-Control o Expires definen cuánto tiempo puede almacenarse una respuesta.

Gestión de cookies
Copiar enlace

Set-Cookie y Cookie ayudan a mantener sesiones y rastrear estados del usuario.

Seguridad
Copiar enlace

Ejemplos:

  • Authorization para autenticación

  • Content-Security-Policy para mitigar ataques XSS

Control de respuesta
Copiar enlace

Ayudan a indicar si una solicitud tuvo éxito o falló.

Ejemplos prácticos de solicitudes HTTP
Copiar enlace

Todos los ejemplos están en Python usando la librería requests.

GET
Copiar enlace

import requests

response = requests.get("https://api.example.com/data",

                        params={"param1": "value1", "param2": "value2"})

print(response.status_code)

print(response.json())

POST
Copiar enlace

import requests

url = "https://api.example.com/users"

data = {

    "username": "newuser",

    "email": "newuser@example.com",

    "password": "securepassword"

}

response = requests.post(url, json=data)

if response.status_code == 201:

    print("User created successfully:", response.json())

else:

    print("Error:", response.status_code, response.text)

PUT
Copiar enlace

import requests

url = "https://api.example.com/users/123"

data = {

    "username": "updateduser",

    "email": "updateduser@example.com"

}

response = requests.put(url, json=data)

if response.status_code == 200:

    print("User updated successfully:", response.json())

else:

    print("Error:", response.status_code, response.text)

DELETE
Copiar enlace

import requests

url = "https://api.example.com/users/123"

response = requests.delete(url)

if response.status_code == 204:

    print("User deleted successfully.")

else:

    print("Error:", response.status_code, response.text)

Conclusión
Copiar enlace

Las solicitudes HTTP desempeñan un papel esencial en la interacción web. Por ello, es importante comprender los distintos métodos y cómo funcionan. Elegir el método adecuado garantiza una comunicación eficiente entre cliente y servidor, mejorando el rendimiento de las aplicaciones web.