Métodos HTTP

Fundamentos Jan 9, 2026 HTTP
http rest verbs crud

Definición

Los métodos HTTP (también llamados verbos HTTP) definen qué acción quieres realizar sobre un recurso. Piensa en ellos como los verbos en una oración: la URL te dice qué (el sustantivo/recurso), y el método te dice la acción (el verbo).

Los principales métodos HTTP se mapean hermosamente a operaciones CRUD: GET (leer), POST (crear), PUT/PATCH (actualizar), DELETE (eliminar). Cada método tiene semánticas específicas: las peticiones GET deben ser seguras (sin efectos secundarios), PUT/DELETE deben ser idempotentes (mismo resultado si se repiten), y POST puede crear nuevos recursos.

Aunque HTTP define nueve métodos, las APIs RESTful usan principalmente cinco: GET, POST, PUT, PATCH y DELETE. Otros como HEAD, OPTIONS y TRACE sirven propósitos específicos. Entender qué método usar y por qué es fundamental para diseñar APIs limpias e intuitivas.

Ejemplo

API de Blog - CRUD Completo:

  • GET /posts - Listar todas las publicaciones del blog
  • GET /posts/123 - Leer publicación específica
  • POST /posts - Crear nueva publicación
  • PUT /posts/123 - Reemplazar publicación completa
  • PATCH /posts/123 - Actualizar parte de publicación (solo título)
  • DELETE /posts/123 - Eliminar publicación

Carrito de E-commerce:

  • GET /cart - Ver contenido del carrito
  • POST /cart/items - Añadir artículo al carrito
  • PATCH /cart/items/456 - Actualizar cantidad
  • DELETE /cart/items/456 - Eliminar artículo
  • DELETE /cart - Limpiar todo el carrito

Gestión de Usuarios:

  • GET /users?role=admin - Listar usuarios administradores
  • POST /users - Crear nueva cuenta de usuario
  • PUT /users/789 - Actualizar perfil completo de usuario
  • PATCH /users/789 - Cambiar solo contraseña
  • DELETE /users/789 - Desactivar cuenta

Analogía

Control Remoto de TV: Los métodos HTTP son como botones en un control remoto:

  • GET = Botón INFO (muestra información, no cambia nada)
  • POST = Botón GRABAR (crea una nueva grabación)
  • PUT = Botón PRESET (reemplaza configuración preset completa)
  • PATCH = VOLUMEN+ (cambia un aspecto)
  • DELETE = Botón BORRAR (elimina una grabación)

Sistema de Tarjeta de Biblioteca:

  • GET = Navegar libros (solo mirar, no cambia inventario)
  • POST = Solicitar nuevo libro (crea nuevo registro de préstamo)
  • PUT = Renovar préstamo (reemplaza fecha de vencimiento antigua con nueva)
  • PATCH = Extender fecha de vencimiento 2 semanas (actualización parcial)
  • DELETE = Devolver libro (elimina registro de préstamo)

Ejemplo de Código

// GET - Recuperar recurso (seguro, idempotente)
GET /api/users/123 HTTP/1.1
Host: api.example.com

// POST - Crear recurso (no idempotente)
POST /api/users HTTP/1.1
Content-Type: application/json

{"name": "Alice", "email": "[email protected]"}

// PUT - Reemplazar recurso (idempotente)
PUT /api/users/123 HTTP/1.1
Content-Type: application/json

{"name": "Alice Smith", "email": "[email protected]", "role": "admin"}

// PATCH - Actualización parcial (idempotente)
PATCH /api/users/123 HTTP/1.1
Content-Type: application/json

{"email": "[email protected]"}

// DELETE - Eliminar recurso (idempotente)
DELETE /api/users/123 HTTP/1.1

// OPTIONS - Descubrir métodos permitidos
OPTIONS /api/users/123 HTTP/1.1
// Respuesta: Allow: GET, PUT, PATCH, DELETE

// HEAD - Obtener metadatos sin cuerpo
HEAD /api/users/123 HTTP/1.1
// Respuesta: solo cabeceras, sin cuerpo

Diagrama

graph TD
A[Métodos HTTP] --> B[Métodos Seguros]
A --> C[Métodos Inseguros]
B --> D[GET]
B --> E[HEAD]
B --> F[OPTIONS]
C --> G[Idempotentes]
C --> H[No Idempotentes]
G --> I[PUT]
G --> J[DELETE]
G --> K[PATCH*]
H --> L[POST]

Mejores Prácticas

  1. Usar GET para leer datos (nunca modificar con GET)
  2. Usar POST para crear nuevos recursos
  3. Usar PUT para reemplazo completo, PATCH para actualizaciones parciales
  4. Usar DELETE para eliminar recursos
  5. Devolver códigos de estado apropiados (201 para POST, 204 para DELETE)
  6. Hacer PUT, PATCH, DELETE idempotentes
  7. Mantener peticiones GET seguras (sin efectos secundarios)
  8. Soportar OPTIONS para preflight CORS
  9. Usar POST para operaciones complejas que no encajan en CRUD
  10. Documentar qué métodos soporta cada endpoint

Errores Comunes

Usar GET para acciones que modifican datos, usar POST para todo, confundir PUT y PATCH, devolver 200 OK para DELETE en lugar de 204 No Content, no implementar idempotencia para PUT/DELETE, olvidar manejar OPTIONS para CORS, usar DELETE con cuerpo de petición (algunos servidores lo ignoran).

Estándares & RFCs

Términos Relacionados