🔄

REST API

REST (Representational State Transfer) es un estilo arquitectónico para diseñar APIs sobre HTTP, basado en recursos identificables por URLs, métodos estándar (GET, POST, PUT, DELETE) y representaciones (JSON, XML). Creado por Roy Fielding en 2000, es el estándar predominante para APIs web por su simplicidad, cache-ability y compatibilidad con la infraestructura HTTP existente.

Ejemplos

  • GET /api/v1/users/42 → { "id": 42, "name": "Alice", "email": "alice@example.com" }
  • POST /api/v1/users { "name": "Bob", "email": "bob@example.com" } → 201 Created, Location: /api/v1/users/99
  • PUT /api/v1/users/42 { "name": "Alice Smith" } → 200 OK
  • DELETE /api/v1/users/42 → 204 No Content
  • GET /api/v1/posts?author=42&status=published&page=2&limit=20

Preguntas frecuentes

¿REST es stateless pero cómo manejo autenticación?

Cada request incluye un token (JWT, OAuth Bearer) en el header Authorization. El servidor valida el token sin mantener sesión; el token contiene claims (user ID, permisos). Esto permite statelessness: cualquier instancia puede verificar el token.

¿Cuándo uso PUT vs PATCH?

PUT reemplaza el recurso completo; enviás todas las propiedades. PATCH actualiza parcialmente; enviás solo las propiedades que cambian. Ejemplo: PATCH /users/42 { "email": "new@example.com" } actualiza solo email, dejando el resto intacto.

¿Cómo manejo relaciones en REST?

Tres enfoques: 1) Subrecursos: GET /users/42/posts. 2) Query params: GET /posts?user_id=42. 3) Incluir relaciones en la respuesta: GET /users/42?include=posts (devuelve user con posts embebidos). Elegí según profundidad y frecuencia de acceso.