17-Estructura Básica de una Petición HTTP

 

Estructura Básica de una Petición HTTP

Sí, es correcto. Cada solicitud HTTP tiene dos partes principales:

1. Headers (Cabeceras)

  • Qué son: Metadatos e información sobre la solicitud

  • Contienen:

    • Tipo de contenido (Content-Type)

    • Método HTTP (GET, POST, PUT, DELETE)

    • Cookies de sesión

    • Información de autenticación

    • Datos del navegador (User-Agent)

2. Body (Cuerpo)

  • Qué es: Los datos reales que se envían

  • Contiene:

    • Formularios (en POST)

    • Archivos subidos

    • Datos JSON para APIs

    • Parámetros complejos

Ejemplo Práctico

Cuando visitas una página web:

  1. Tu navegador (cliente) envía una solicitud GET:

    text
    GET /index.html HTTP/1.1
    Host: www.ejemplo.com
    User-Agent: Mozilla/5.0
    Accept: text/html
  2. El servidor responde:

    text
    HTTP/1.1 200 OK
    Content-Type: text/html
    Content-Length: 1234
    
    <!DOCTYPE html>
    <html>...</html>

Tipos Comunes de Solicitudes

MétodoUsoTiene Body
GETObtener datosNo
POSTEnviar datos
PUTActualizar datos
DELETEEliminar datosNo

Flujo Completo

¿Te gustaría que profundice en algún aspecto específico como APIs REST, métodos HTTP o seguridad


¿Qué es una API REST?

Es una interfaz que sigue principios REST (Representational State Transfer) donde:

  • Todo es un recurso (usuarios, productos, etc.)

  • Se accede mediante URLs específicas

  • Usa métodos HTTP para definir acciones

  • Los datos suelen viajar en formato JSON


Estructura Típica de una API REST

1. Endpoint (URL)

text
https://api.mitienda.com/v1/productos/123
  • productos → recurso

  • 123 → identificador único

2. Headers Comunes en APIs

http
GET /v1/productos/123 HTTP/1.1
Host: api.mitienda.com
Authorization: Bearer tu_token_jwt
Content-Type: application/json
Accept: application/json

3. Body en Diferentes Métodos


Ejemplos Prácticos por Método HTTP

GET - Obtener recursos

http
GET /v1/productos HTTP/1.1
Authorization: Bearer abc123...

Respuesta:

http
HTTP/1.1 200 OK
Content-Type: application/json

{
  "data": [
    {"id": 1, "nombre": "Laptop", "precio": 999},
    {"id": 2, "nombre": "Mouse", "precio": 25}
  ]
}

POST - Crear nuevo recurso

http
POST /v1/productos HTTP/1.1
Content-Type: application/json
Authorization: Bearer abc123...

{
  "nombre": "Teclado",
  "precio": 75,
  "categoria": "accesorios"
}

PUT - Actualizar recurso completo

http
PUT /v1/productos/456 HTTP/1.1
Content-Type: application/json

{
  "nombre": "Teclado Mecánico",
  "precio": 89,
  "categoria": "accesorios-premium"
}

PATCH - Actualización parcial

http
PATCH /v1/productos/456 HTTP/1.1
Content-Type: application/json

{
  "precio": 79
}

DELETE - Eliminar recurso

http
DELETE /v1/productos/456 HTTP/1.1
Authorization: Bearer abc123...

Códigos de Estado HTTP en APIs

CódigoSignificado
200 OKSolicitud exitosa
201 CreatedRecurso creado
400 Bad RequestError en los datos
401 UnauthorizedNo autenticado
403 ForbiddenSin permisos
404 Not FoundRecurso no existe
500 Internal Server ErrorError del servidor

Flujo Completo de una API REST


Headers Específicos de APIs

Autenticación:

http
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Control de CORS:

http
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT

Paginación:

http
Link: <https://api.com/v1/productos?page=2>; rel="next"

Ejemplo Real con Fetch API (JavaScript)

javascript
// Obtener productos
const response = await fetch('https://api.mitienda.com/v1/productos', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer ' + token,
    'Content-Type': 'application/json'
  }
});

const productos = await response.json();
javascript
// Crear nuevo producto
const response = await fetch('https://api.mitienda.com/v1/productos', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + token,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    nombre: "Nuevo Producto",
    precio: 99.99
  })
});

¿Te gustaría que profundice en algún aspecto específico como autenticación JWT, diseño de endpoints, o mejores prácticas

Comentarios

Entradas más populares de este blog

1-Autenticación JWT en PHP: Explicación y Ejemplo

8-JWT en 10 minutos - ¿Qué es JWT? ¿Para que sirve? ¿Cuando usarlo? ¿Cómo se usa?

2-JSON Web Tokens