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:
+-----------------------+
| Request Line | <- ENCABEZADO (Headers)
| Headers |
| |
+-----------------------+
| |
| Body | <- CUERPO (Payload/Datos)
| |
+-----------------------+馃摠 REQUEST (Petici贸n Cliente → Servidor)
1. Request Line (L铆nea de Petici贸n)
GET /api/users/123 HTTP/1.1M茅todo: GET, POST, PUT, DELETE, etc.
Path/Ruta:
/api/users/123Versi贸n HTTP: HTTP/1.1 o HTTP/2
2. Headers (Encabezados)
Host: api.midominio.com
Content-Type: application/json
Authorization: Bearer token123
Accept: application/json
User-Agent: Mozilla/5.0
Content-Length: 45Headers importantes en APIs:
Content-Type: Tipo de datos del body (JSON, XML, form-data)Authorization: Token de autenticaci贸nAccept: Qu茅 formatos acepta el clienteContent-Length: Tama帽o del body en bytes
3. Body (Cuerpo) - Solo en algunos m茅todos
{
"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)
HTTP/1.1 200 OKVersi贸n HTTP: HTTP/1.1
C贸digo de Estado: 200, 404, 500, etc.
Mensaje: OK, Not Found, Internal Server Error
2. Headers (Encabezados)
Content-Type: application/json
Content-Length: 89
Server: nginx/1.18
Date: Mon, 15 Mar 2024 10:30:00 GMT
Cache-Control: no-cacheHeaders importantes en respuestas:
Content-Type: Tipo de datos en el bodyContent-Length: Tama帽o de la respuestaStatus: C贸digo HTTP (200, 404, 500, etc.)
3. Body (Cuerpo de la Respuesta)
{
"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:
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:
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)
+--------------------------------------------------+
| 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铆stica | Headers (Encabezados) | Body (Cuerpo) |
|---|---|---|
| Prop贸sito | Metadatos y configuraci贸n | Datos principales |
| Ejemplo API | Auth, Content-Type, Accept | JSON con datos del usuario |
| Tama帽o | Generalmente peque帽o (KB) | Puede ser grande (MB/GB) |
| Visibilidad | Visible en logs, cach茅 | Generalmente encriptado |
| Formato | Texto plano (key: value) | JSON, XML, binario |
馃洝️ HTTPS (HTTP Seguro)
En HTTPS, todo el mensaje HTTP se encripta:
+------------------------+
| Encabezado TLS/SSL | <- Handshake y encriptaci贸n
+------------------------+
| HTTP Request Encriptado| <- Headers + Body encriptados
+------------------------+馃捇 Ejemplo Pr谩ctico con curl
# 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:
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
Headers: Son metadatos (autenticaci贸n, tipo de contenido, cach茅)
Body: Contiene los datos reales de la transacci贸n (JSON, XML, etc.)
Request Line/Status Line: Informaci贸n b谩sica del m茅todo y estado
En APIs REST: Casi siempre usamos JSON en el body
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
Publicar un comentario