Estructura de Paquetes en APIs (HTTP/HTTPS)

 

Estructura de Paquetes en APIs (HTTP/HTTPS)

Te explico espec铆ficamente para el contexto de APIs, usando HTTP como ejemplo principal.

馃寪 Estructura B谩sica de un Mensaje HTTP

Un mensaje HTTP tiene dos partes principales:

text
+-----------------------+
|      Request Line     |  <- ENCABEZADO (Headers)
|      Headers          |
|                       |
+-----------------------+
|                       |
|       Body            |  <- CUERPO (Payload/Datos)
|                       |
+-----------------------+

馃摠 REQUEST (Petici贸n Cliente → Servidor)

1. Request Line (L铆nea de Petici贸n)

text
GET /api/users/123 HTTP/1.1
  • M茅todo: GET, POST, PUT, DELETE, etc.

  • Path/Ruta/api/users/123

  • Versi贸n HTTP: HTTP/1.1 o HTTP/2

2. Headers (Encabezados)

text
Host: api.midominio.com
Content-Type: application/json
Authorization: Bearer token123
Accept: application/json
User-Agent: Mozilla/5.0
Content-Length: 45

Headers importantes en APIs:

  • Content-Type: Tipo de datos del body (JSON, XML, form-data)

  • Authorization: Token de autenticaci贸n

  • Accept: Qu茅 formatos acepta el cliente

  • Content-Length: Tama帽o del body en bytes

3. Body (Cuerpo) - Solo en algunos m茅todos

json
{
  "name": "Juan P茅rez",
  "email": "juan@email.com",
  "age": 30
}
  • Opcional: Solo en POST, PUT, PATCH

  • Formato com煤n: JSON, XML, form-data

  • Vac铆o: En GET, DELETE normalmente no tiene body

馃摛 RESPONSE (Respuesta Servidor → Cliente)

1. Status Line (L铆nea de Estado)

text
HTTP/1.1 200 OK
  • Versi贸n HTTP: HTTP/1.1

  • C贸digo de Estado: 200, 404, 500, etc.

  • Mensaje: OK, Not Found, Internal Server Error

2. Headers (Encabezados)

text
Content-Type: application/json
Content-Length: 89
Server: nginx/1.18
Date: Mon, 15 Mar 2024 10:30:00 GMT
Cache-Control: no-cache

Headers importantes en respuestas:

  • Content-Type: Tipo de datos en el body

  • Content-Length: Tama帽o de la respuesta

  • Status: C贸digo HTTP (200, 404, 500, etc.)

3. Body (Cuerpo de la Respuesta)

json
{
  "success": true,
  "data": {
    "id": 123,
    "name": "Juan P茅rez",
    "email": "juan@email.com"
  },
  "timestamp": "2024-03-15T10:30:00Z"
}

馃幆 Ejemplo Completo de una API REST

Petici贸n POST para crear usuario:

text
POST /api/users HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Accept: application/json
Content-Length: 56

{
  "name": "Ana Garc铆a",
  "email": "ana@email.com",
  "password": "segura123"
}

Respuesta del servidor:

text
HTTP/1.1 201 Created
Content-Type: application/json
Server: Express
Date: Mon, 15 Mar 2024 10:35:00 GMT
Content-Length: 125

{
  "status": "success",
  "message": "Usuario creado",
  "data": {
    "id": 456,
    "name": "Ana Garc铆a",
    "email": "ana@email.com",
    "createdAt": "2024-03-15T10:35:00Z"
  }
}

馃攳 Estructura T茅cnica Real (C贸mo viaja por la red)

text
+--------------------------------------------------+
| Encabezado Ethernet (MAC addresses)             | <- Capa 2
+--------------------------------------------------+
| Encabezado IP (IP origen/destino)               | <- Capa 3
+--------------------------------------------------+
| Encabezado TCP (puertos, secuencia, flags)      | <- Capa 4
+--------------------------------------------------+
| ENCABEZADOS HTTP (Headers)                      | <- Capa 7
+--------------------------------------------------+
| CUERPO HTTP (Body/JSON)                         | <- Capa 7
+--------------------------------------------------+

馃搳 Diferencia entre Headers y Body en APIs

Caracter铆sticaHeaders (Encabezados)Body (Cuerpo)
Prop贸sitoMetadatos y configuraci贸nDatos principales
Ejemplo APIAuth, Content-Type, AcceptJSON con datos del usuario
Tama帽oGeneralmente peque帽o (KB)Puede ser grande (MB/GB)
VisibilidadVisible en logs, cach茅Generalmente encriptado
FormatoTexto plano (key: value)JSON, XML, binario

馃洝️ HTTPS (HTTP Seguro)

En HTTPS, todo el mensaje HTTP se encripta:

text
+------------------------+
| Encabezado TLS/SSL     | <- Handshake y encriptaci贸n
+------------------------+
| HTTP Request Encriptado| <- Headers + Body encriptados
+------------------------+

馃捇 Ejemplo Pr谩ctico con curl

bash
# Petici贸n GET sin body
curl -X GET https://api.ejemplo.com/users/123 \
     -H "Authorization: Bearer token123" \
     -H "Accept: application/json"

# Petici贸n POST con body JSON
curl -X POST https://api.ejemplo.com/users \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer token123" \
     -d '{"name": "Carlos", "age": 25}'

馃毃 Errores Comunes y C贸digos HTTP

C贸digos importantes para APIs:

  • 2xx 脡xito: 200 OK, 201 Created, 204 No Content

  • 4xx Error Cliente: 400 Bad Request, 401 Unauthorized, 404 Not Found

  • 5xx Error Servidor: 500 Internal Server Error, 503 Service Unavailable

Ejemplo de error en API:

text
HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "El campo 'email' es requerido",
    "details": {
      "field": "email",
      "constraint": "required"
    }
  }
}

馃摑 Resumen Clave

  1. Headers: Son metadatos (autenticaci贸n, tipo de contenido, cach茅)

  2. Body: Contiene los datos reales de la transacci贸n (JSON, XML, etc.)

  3. Request Line/Status Line: Informaci贸n b谩sica del m茅todo y estado

  4. En APIs REST: Casi siempre usamos JSON en el body

  5. HTTPS: Encripta tanto headers como body para seguridad

¿Te gustar铆a que profundice en alg煤n aspecto espec铆fico como autenticaci贸n, formatos de body, o m茅todos HTTP

Comentarios

Entradas populares de este blog

¿Qu茅 es el Modelo OSI?

bit -El codigo ASCII

38. Tema 1: Protocolos de comunicaci贸n.