Saltar al contenido principal

🌐 ¿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

🎬 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.