Sobes.tech
Junior

¿Qué es REST?

sobes.tech AI

Respuesta de la IA

REST (Transferencia de Estado Representacional) es un estilo arquitectónico para construir sistemas distribuidos, principalmente utilizado en el diseño de servicios web. Se basa en un conjunto de principios y restricciones que definen cómo interactúan los recursos web.

Principios clave de REST:

  • Cliente-servidor: División clara de responsabilidades entre cliente y servidor.
  • Sin estado (stateless): El servidor no almacena información sobre el estado del cliente entre solicitudes. Cada solicitud contiene toda la información necesaria para su procesamiento.
  • Cacheable (cachable): Los clientes pueden almacenar en caché las respuestas del servidor para mejorar el rendimiento. El servidor indica explícitamente si la respuesta puede ser almacenada en caché.
  • Sistema en capas: El cliente puede interactuar con una capa intermedia (por ejemplo, proxy, balanceador de carga) sin saberlo.
  • Código a petición (opcional): El servidor puede transferir código ejecutable al cliente (por ejemplo, JavaScript), ampliando la funcionalidad del cliente.
  • Interfaz uniforme: La restricción más importante, que incluye:
    • Identificación de recursos (URI).
    • Manipulación de recursos a través de representaciones (intercambio de datos en un formato determinado, por ejemplo, JSON, XML).
    • Mensajes auto-descriptivos (los mensajes contienen toda la información necesaria para su comprensión).
    • HATEOAS (Hypermedia as the Engine of Application State): El cliente navega entre estados de la aplicación usando hipervínculos en las respuestas del servidor.

API RESTful es una implementación del estilo REST para servicios web, que utiliza métodos HTTP estándar (GET, POST, PUT, DELETE) para trabajar con recursos.

// Ejemplo de uso de métodos HTTP en API RESTful
// Obtener recurso
// GET /api/products/1

// Crear recurso
// POST /api/products
// Cuerpo: { "name": "Nuevo Producto", "price": 10.50 }

// Actualizar recurso
// PUT /api/products/1
// Cuerpo: { "name": "Producto Actualizado", "price": 11.00 }

// Eliminar recurso
// DELETE /api/products/1