Entendiendo REST

En estos últimos años tanto Internet, como la forma que tenemos de acceder a él, han cambiado de forma radical.

Si hace unos años, apenas se podía acceder con modems a web sin apenas funcionalidades, en la actualidad nos encontramos con que el volumen de medios para acceder a dichas webs y las nuevas funcionalidades específicas de cada medio han hecho que las reglas tradicionales cambien, y que los desarrolladores tengamos que plantearnos nuevas formas de comunicación entre el servidor y los distintos clientes.

De esta necesidad surge el auge de las APIs en la web como nuevos métodos de comunicación entre el servidor y los diferentes clientes. Y, dentro del enmarañado mundo de las APIs, aparece con fuerza un nombre, REST.

 

Pero, ¿qué es REST?

REST es una técnica de arquitectura de software, es decir, un conjunto de principios  y patrones de comunicación que ayudan a crear una forma de pensar y construir las APIs.

Este tipo de arquitectura se define por un conjunto de restricciones entre los elementos, componentes, conectores y datos usados. La definición formal es:

  • Es un modelo cliente-servidor, es una interfaz uniforme que separa a cliente y servidor. Haciendo que ambas partes sean completamente independiente, pudiendo ser reemplazadas de forma transparente para la otra parte.
  • Es un protocolo sin estado (o stateless), cada petición realizada por un cliente debe contener toda la información necesaria para poder resolverla. Además debe ser idempotente, por lo que la misma petición, con los mismos parámetros, debería devolver el mismo resultado.
  • Debe ser cacheable, y cada petición debe indicar si el resultado de la misma puede ser o no cacheado. Un sistema correcto de cacheo, tanto parcial como completo, ayudará en gran medida a la escalabilidad y rendimiento.
  • El único punto opcional es la posibilidad de entregar código bajo demanda que pueda ser ejecutado en el lado del cliente.
  • Y lo más importante, debe otorgar una interfaz uniforme  que represente de forma única los recursos, por ejemplo mediante el uso de URIs únicas,y  que permita la manipulación de dichos recursos a través de dichas representaciones.
  • Además esta interfaz debe incorporar mensajes autodescriptivos junto con un uso correcto de los códigos de estado HTML
  • Y por último, debe basarse en el uso de hipermedios como motor para poder indicar las diferentes acciones. Exceptuando el uso de determinados puntos de acceso fijos, un cliente no debería asumir que una determinada acción es accesible para un determinado recurso, a no ser que venga descrito en la representación del recurso recibida previamente.

Es por tanto, este punto, una de las restricciones más importantes en una aplicación basada en las restricciones de REST.

 

Entonces, ¿qué significa que un API es RESTful?

Bueno, simplemente es una forma de nombrar a aquellas APIs que si cumplen de forma correcta con la definición de REST definida antes.

No solo con la filosofía principal o con algunos de las restricciones, sino con todas las restricciones y definiciones previas.

 

El falso mito del RESTful como un sistema REST + hipermedia

La popularidad de REST ha crecido de forma exponencial en los últimos años, pero pocas APIs cumplen realmente con los principios, y en especial con lo relacionado al uso de hipermedios.

Por esto, y por una falta de conocimiento real del significado, se ha empezado a desvirtualizar el concepto de REST y RESTful, asumiendo que existe el término de API REST que sería el de crear una API que se basa en la implementación básica de dicha arquitectura a la web, pero que no cumple con las restricciones al completo, siendo esta una mala desvirtualización del término.

Y el otro error es asumir al segundo término, RESTful, el hecho de crear una API REST como las anteriores, pero añadiendo el uso de hipermedia, sin tener por qué considerar ninguna otra de las restricciones.

 

You may also like

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies