REST (Transferencia de Estado Representacional) es un estilo arquitectónico para diseñar sistemas distribuidos.
REST
REST (Transferencia de Estado Representacional) es un estilo arquitectónico para diseñar sistemas distribuidos. Proporciona un conjunto de directrices para estructurar la comunicación entre componentes, generalmente a través de una red. REST enfatiza un enfoque sin estado y orientado a recursos donde se realizan operaciones sobre recursos identificables de manera única, representados como URLs, utilizando un conjunto estándar de métodos HTTP.
También conocido como: arquitectura RESTful, principios de diseño REST.
Comparaciones
-
REST vs. Arquitectura Cliente-Servidor: REST se basa en la arquitectura cliente-servidor, pero añade restricciones específicas como la falta de estado y una interfaz uniforme.
-
REST vs. CRUD: Si bien REST se relaciona estrechamente con las operaciones CRUD (Crear, Leer, Actualizar, Eliminar), incluye pautas adicionales para interacciones escalables y sin estado.
Pros
-
Interfaz uniforme: Garantiza estándares de comunicación consistentes.
-
Diseño sin estado: Simplifica el procesamiento del lado del servidor manteniendo las interacciones independientes.
-
Capacidad de almacenamiento en caché: Mejora el rendimiento mediante mecanismos de caché HTTP.
Contras
-
Carece de gestión de estado incorporada: La falta de estado significa que REST no maneja inherentemente las sesiones.
-
Sobrecarga o subcarga de datos: Puede ocurrir si las API no están diseñadas de manera eficiente.
Ejemplo
Imagina un sistema basado en REST para una biblioteca en línea:
-
Un recurso de libro podría estar representado por la URL: http://example.com/books/1
-
Para actualizar el recurso (por ejemplo, cambiar el título del libro), el cliente emitiría una solicitud HTTP PUT:
Solicitud:
PUT /books/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{
"title": "Título Actualizado"
}
Respuesta:
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"title": "Título Actualizado",
"author": "Autor Original"
}
