Servicios REST: ¿Qué son?

Iniciamos aquí una serie de 3 post sobre los Servicios REST ((Representational State Transfer)

Iniciamos aquí una serie de 3 post sobre los Servicios REST (Representational State Transfer)

Hoy en día existe una gran cantidad de información en Internet que va aumentando diariamente. La información crece más rápido de lo que puede ser visualizada. Internet ya no solo contiene información para que los humanos consultemos, sino para que sistemas automáticos puedan intercambiar datos entre ellos. Por tanto, existe la necesidad de organizar la información en la nube de forma que los programas puedan subir, compartir, buscar, encontrar y monitorizar la información de orígenes diversos como datos de ventas, información financiera, campañas de marketing, etc.

Surge la necesidad de buscar el modo de hacer fáciles las cosas complejas. Y esa es la filosofía que está detrás de los Servicios REST (Representational State Transfer), que no son un estándar, sino una filosofía de organización de las arquitecturas de sistemas en red consistente en clientes y servidores.

En el mundo de la automatización también existe una tendencia a dejar disponible en la nube información del proceso, especialmente en los entornos distribuidos geográficamente. Este puede ser el caso de las SmartCities, que deben recoger medidas diversas mediante sensores distribuidos por toda una ciudad. Los sensores suelen tener un concentrador con capacidad para compartir la información vía Wifi o GPRS, pero también están surgiendo sensores inteligentes con la capacidad de comunicación directa por Internet, para compartir sus medidas o para ser configurados remotamente. Si bien estos sensores pueden comunicar con protocolos sencillos como HTTP, no son capaces de ejecutar código personalizado, por lo que el modo de compartir la información debe estar definido de manera muy simple y a través de protocolos estándar.

Los Servicios REST definen unos principios de arquitectura mediante los cuales se pueden definir unos servicios Web focalizados en los recursos de un sistema, incluyendo cómo acceder a los estados de los recursos.

Representational State Transfer (REST) está ganando un hueco muy importante en la Web como una alternativa sencilla a los Servicios Web basados en SOAP (Simple Object Access Protocol) y WSDL (Web Services Description Language), ya que son más fáciles de utilizar al ser un modelo que expone los servicios como recursos.
REST fue descrito por primera vez en el año 2000 por Roy Fielding en su disertación sobre principios de arquitectura de sistemas en red . Según la definición de Fielding:

«Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use.»

Es decir, REST permite el acceso a contenido en la Web representado como el estado de un recurso, a partir del cual se puede evolucionar o transferir a otro recurso o a otro estado del recurso.

Un recurso puede representar cualquier cosa que pueda ser descrita por su estado o contenido, desde una lista de material de una empresa hasta el detalle de cada uno de los materiales de dicha lista. Un recurso es una entidad conceptual. Su representación es la manifestación concreta del recurso. Por ejemplo, Amazon o eBay tienen todos los elementos en venta como recursos dentro de sus páginas, es decir, cada objeto en venta puede ser accedido individualmente desde un cliente mediante servicios REST.