🌐 ¿Qué es HTTP?
📖 Definición
HTTP (Protocolo de Transferencia de Hipertexto) es el protocolo para intercambiar datos en la web. Define las reglas de comunicación entre clientes (navegadores) y servidores, siendo la tecnología fundamental de internet.
🎯 Comprendiendo con analogías
Sistema postal
Comparar HTTP con un sistema postal:
Enviar carta (Solicitud HTTP)
├─ Remitente: Cliente (navegador)
├─ Destinatario: Servidor
├─ Contenido de la carta: Datos de solicitud
└─ Reglas postales: Protocolo HTTP
Recibir respuesta (Respuesta HTTP)
├─ Remitente: Servidor
├─ Destinatario: Cliente
├─ Contenido de la respuesta: Datos de respuesta
└─ Estado: Éxito/Fallo
Pedido en un restaurante
Cliente (cliente)
↓ Mirar menú (solicitud GET)
Camarero (HTTP)
↓ Transmitir pedido
Cocina (servidor)
↓ Preparar comida
Camarero (HTTP)
↓ Entregar comida (respuesta)
Cliente (cliente)
💡 Conceptos clave de HTTP
Solicitud y respuesta
Cliente ────Solicitud(Request)───→ Servidor
←───Respuesta(Response)────
Solicitud (Request)
- Cliente indica lo que quiere al servidor
- Compuesta por método, URL, encabezados y cuerpo
Respuesta (Response)
- Servidor devuelve el resultado de la solicitud
- Compuesta por código de estado, encabezados y cuerpo
Características de HTTP
1. Sin estado (Stateless)
├─ Cada solicitud es independiente
├─ No recuerda solicitudes previas
└─ Gestiona estado con cookies/sesiones
2. Estructura cliente-servidor
├─ Separación de roles
├─ Cliente: UI/UX
└─ Servidor: Datos/Lógica de negocio
3. Sin conexión (Connectionless)
├─ Conexión finaliza tras solicitud-respuesta
├─ Ahorra recursos del servidor
└─ Puede mejorarse con Keep-Alive
📚 Serie de documentos
Esta serie cubre los conceptos fundamentales de HTTP paso a paso:
1. Métodos HTTP
GET, POST, PUT, DELETE, etc.
- Tipos y usos de métodos HTTP
- Diseño de API RESTful
- Idempotencia y seguridad
- Ejemplos prácticos
2. Códigos de estado HTTP
200, 404, 500, etc.
- 2xx (éxito), 4xx (errores de cliente), 5xx (errores de servidor)
- Significado de cada código de estado
- Códigos más comunes en la práctica
- Manejo de errores
3. Encabezados HTTP
Encabezados de solicitud/respuesta
- Rol y tipos de encabezados
- Content-Type, Authorization, etc.
- Encabezados CORS
- Encabezados de caché
4. Cookies y sesiones
Gestión de estado
- Superando la naturaleza sin estado de HTTP
- Principios de funcionamiento de cookies
- Sesiones vs tokens
- Consideraciones de seguridad
🔍 Evolución de HTTP
HTTP/0.9 (1991)
├─ Solo soportaba método GET
└─ Transfería solo HTML
HTTP/1.0 (1996)
├─ Introdujo concepto de encabezados
├─ Agregó POST, HEAD
└─ Introdujo códigos de estado
HTTP/1.1 (1997)
├─ Keep-Alive por defecto
├─ Pipelining
├─ Agregó PUT, DELETE, etc.
└─ Encabezado de host obligatorio
HTTP/2 (2015)
├─ Protocolo binario
├─ Multiplexación
├─ Compresión de encabezados
└─ Server push
HTTP/3 (2022)
├─ Basado en QUIC (UDP)
├─ Conexiones más rápidas
└─ Resistente a pérdida de paquetes
💡 Ejemplos reales
Carga de página web
1. Introducir URL en navegador
https://example.com
2. Consulta DNS
example.com → 93.184.216.34
3. Generar solicitud HTTP
GET / HTTP/1.1
Host: example.com
User-Agent: Chrome/120.0
4. Respuesta del servidor
HTTP/1.1 200 OK
Content-Type: text/html
<html>...</html>
5. Renderizado del navegador
Mostrar página web
Ejemplo de llamada API
# Solicitud GET - Consultar datos
curl https://api.example.com/users
# Solicitud POST - Crear datos
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "María González"}'
# Solicitud PUT - Modificar datos
curl -X PUT https://api.example.com/users/1 \
-H "Content-Type: application/json" \
-d '{"name": "Carlos Sánchez"}'
# Solicitud DELETE - Eliminar datos
curl -X DELETE https://api.example.com/users/1
🤔 Preguntas frecuentes
Q1. ¿Cuál es la diferencia entre HTTP y HTTPS?
R:
HTTP (Puerto 80)
├─ Comunicación sin cifrar
├─ Vulnerable a interceptaciones
└─ http://
HTTPS (Puerto 443)
├─ Cifrado SSL/TLS
├─ Protección de datos
├─ Requiere certificado
└─ https://
Diferencias principales:
- HTTPS cifra datos en tránsito
- Previene ataques de intermediario
- Mejor para SEO
- Estándar web moderno
Q2. ¿Por qué HTTP es sin estado?
R:
Razones del estado sin estado:
1. Escalabilidad
├─ Servidor no almacena estado
├─ Distribuible en varios servidores
└─ Facilita balanceo de carga
2. Simplicidad
├─ Cada solicitud independiente
├─ Implementación de servidor simple
└─ Recuperación de fallos sencilla
3. Ahorro de recursos
├─ Minimiza uso de memoria
└─ Procesamiento concurrente eficiente
Métodos de gestión de estado:
- Cookies
- Sesiones
- Tokens (JWT)
- Almacenamiento local
Q3. ¿Cuál es la relación entre REST API y HTTP?
R:
REST (Transferencia de Estado Representacional)
├─ Estilo arquitectónico basado en HTTP
├─ Mapea métodos HTTP a CRUD
└─ Diseño centrado en recursos
Métodos HTTP y CRUD:
GET → Read (consulta)
POST → Create (creación)
PUT → Update (modificación total)
PATCH → Update (modificación parcial)
DELETE → Delete (eliminación)
Ejemplo de API RESTful:
GET /users - Listar usuarios
GET /users/1 - Consultar usuario
POST /users - Crear usuario
PUT /users/1 - Modificar usuario
DELETE /users/1 - Eliminar usuario
🎓 Orden de aprendizaje recomendado
Paso 1: Conceptos básicos
├─ ¿Qué es HTTP? (documento actual)
├─ Estructura de solicitud/respuesta
└─ Modelo cliente-servidor
Paso 2: Métodos HTTP
├─ GET, POST, PUT, DELETE
├─ Propósito de cada método
└─ Diseño RESTful
Paso 3: Códigos de estado
├─ Significado de 2xx, 4xx, 5xx
├─ Códigos más comunes
└─ Manejo de errores
Paso 4: Encabezados
├─ Encabezados de solicitud/respuesta
├─ Content-Type
└─ Encabezados de autenticación
Paso 5: Gestión de estado
├─ Cookies y sesiones
├─ Autenticación con token
└─ Consideraciones de seguridad
🔗 Documentos relacionados
- ¿Cómo funcionan los navegadores? - Cómo se usa HTTP en navegadores
- ¿Qué es una API? - Concepto de API basada en HTTP
- ¿Qué es HTTPS? - Versión segura de HTTP
- ¿Qué es CORS? - Política de recursos de origen cruzado
🎬 Conclusión
¡HTTP es el protocolo fundamental para el desarrollo web! Con esta serie, habrás aprendido paso a paso los conceptos clave de HTTP.
Siguiente paso: Lea Métodos HTTP para entender en detalle GET, POST y otros métodos.