En esta oportunidad voy a hablarles del famoso REST, también les comento que en este otro blog donde soy colaborador independiente escribí sobre el mismo tema, si gustas puedes echarle un vistazo, tengo algunos artículos que pueden gustarte 🐿️🤝
Las siglas de este estilo arquitectónico provienen de Representational State Transfer, que en español se traduce como Transferencia de estado representacional. Este concepto fue propuesto en la tesis doctoral de Roy Thomas Fielding, titulada "Architectural Styles and the Design of Network-based Software Architectures", presentada en el año 2000 en la Universidad de California, Irvine.
Pero antes de continuar, definamos REST: es un estilo arquitectónico de software diseñado para la comunicación entre cliente y servidor. Utiliza el protocolo HTTP para la interacción con el servidor, y los mensajes que se envían y reciben suelen estar en formato JSON, aunque también puede utilizarse XML, aunque en menor medida.
Principios de REST
Para que la comunicación con una API utilizando el estilo REST funcione, debe cumplir con una serie de principios, entre los cuales se encuentran:
Interfaz uniforme (Uniform interface): Este principio establece que REST se basa en recursos, los cuales deben representarse con sustantivos en plural, por ejemplo: productos, estudiantes, películas.
Sin estado (Stateless): REST no mantiene estados, lo que significa que cada llamada a la API es independiente y no depende de las anteriores. Sin embargo, se puede usar caché para reducir el tiempo de espera en consultas GET.
Cliente-Servidor (Client-Server): El servidor procesa las solicitudes a la API y expone los recursos a uno o varios clientes, como una aplicación de escritorio o una página web. El cliente debe ser independiente del servidor, y toda comunicación se realiza a través de la API.
Cacheable (Cacheability): Siempre que sea posible, los recursos deben ser "cacheables", tanto en el servidor como en el lado del cliente. La respuesta del servidor debe indicar cuándo es posible o no el uso del caché, con el fin de mejorar el rendimiento del cliente y la escalabilidad del servidor.
Sistema de capas (Layered system): El servicio web debe tener una arquitectura por capas, donde la evolución del sistema sea completamente transparente para el cliente.
Características de REST
Genio, además de los principios mencionados anteriormente, hay otros aspectos que deben tomarse en cuenta, los cuales son características clave de cualquier API que implemente el estilo REST. Entre ellos podemos destacar:
Operaciones específicas: Cada acción u operación sobre un recurso está claramente definida y tiene un propósito específico, evitando endpoints "multifuncionales". Por ejemplo, un endpoint destinado a insertar nuevos productos no debería usarse también para registrar clientes.
Sintaxis estandarizada: Cada recurso es accesible únicamente a través de su URI.
HATEOAS: Este acrónimo significa "Hypermedia As The Engine Of Application State" (Hipermedia como motor del estado de la aplicación). Es un principio de diseño de REST que establece que, por ejemplo, la información que nos proporciona una API web debe incluir enlaces relacionados.
Código bajo demanda (Code on demand): Esta es una característica opcional. Aunque los servicios web generalmente proporcionan recursos estáticos, también pueden enviar código que se ejecuta en el cliente, típicamente en forma de JavaScript.
Tengo otros artículos también que hablan de qué es un API, también que te sacarán de dudas como: Se dice API REST o API RESTful? son lo mismo? y otras más así que te invito a leer más artículos de este blog y a compartirlo con todo tu equipo de trabajo, y ya sabes, si esta entrada te ha encantado, compártela! 🐿️
Créditos de la imagen de portada: Foto de Cristina Marin en Unsplash