Middle
¿Cuáles son los principios de REST?
sobes.tech AI
Respuesta de la IA
Existen los siguientes principios de REST:
- Arquitectura cliente-servidor: Separación de responsabilidades entre el cliente (consumidor del servicio) y el servidor (proveedor del servicio). Esto favorece la portabilidad del código del cliente y la escalabilidad del servidor.
- Sin estado (Stateless): Cada solicitud del cliente al servidor debe contener toda la información necesaria para que el servidor pueda procesarla. El servidor no guarda estado del cliente entre solicitudes.
- Cachable: El servidor puede indicar explícitamente si los datos pueden ser almacenados en caché por el cliente o por capas intermedias. Esto mejora el rendimiento y la escalabilidad.
- Interfaz uniforme: La más importante, que incluye cuatro subprincipios:
- Identificación de recursos: Los recursos se identifican mediante URIs únicos.
- Manipulación de recursos a través de representaciones: El cliente interactúa con los recursos obteniendo sus representaciones (por ejemplo, en formato JSON o XML) y enviando nuevas representaciones para modificar el estado del recurso.
- Mensajes auto-descriptivos: Cada mensaje contiene suficiente información para que el receptor entienda cómo procesarlo. Se utilizan cabeceras HTTP estándar.
- Hipertexto como motor del estado de la aplicación (HATEOAS): El cliente debe encontrar información sobre acciones disponibles y transiciones posibles entre estados de la aplicación a partir de enlaces hipertexto integrados en las representaciones de los recursos.
- Sistema en capas: La arquitectura puede estar organizada en capas intermedias (por ejemplo, proxies, caches, gateways) a través de las cuales pasan las solicitudes y respuestas. El cliente no sabe si se comunica directamente con el servidor final o a través de capas intermedias.
- Código bajo demanda (opcional): El servidor puede extender temporalmente la funcionalidad del cliente transmitiendo código ejecutable (por ejemplo, JavaScript). Este principio es opcional para cumplir con REST.