Fundamentos de los servicios web REST

Servicios Web REST

Servicio Web

De manera general, un “servicio web” es un componente de software cuyos datos y/o funcionalidad pueden accederse empleado el protocolo HTTP.

Cuando la funcionalidad de un sistema está distribuida en varios servicios web que interactúan entre sí, se considera que el sistema tiene una arquitectura orientada  a servicios (SOA). Una de las mayores ventajas de este tipo de arquitectura es la interoperabilidad entre componentes que pueden estar desarrollados y desplegados en plataformas diferentes.

REST

REST (Representational State Transfer) es un término que hace referencia a una serie de recomendaciones o principios de diseño para el desarrollo de servicios web. “RESTful” se refiere al grado de adopción de estos principios; es decir, que tan “REST” es un servicio web. Estrechamente relacionado a esta idea está el concepto de Nivel de madurez de los servicios RESTful.

Principios de Diseño REST

En esta sección se explican algunos de los aspectos más importantes de los principios REST:

Recursos identificables

Un recurso es cualquier entidad que contenga datos; cada recurso tiene asociada una dirección o URI (Uniform Resource Identifier) que es necesario proveer para manipular el recurso. Los datos de un recurso pueden manifestarse en diferentes representaciones: HTML, XML o JSON.

Los servicios web REST emplean el URI con el siguiente formato:

esquema://host:puerto/ruta?cadenaDeConsulta#fragmento

Por ejemplo, en el siguiente URI:

http://example.com:8080/customers?lastName=Burke&zipcode=02115

Tenemos que:

  • esquema = http
  • host = example.com
  • puerto = 8080
  • ruta (path) = customers
  • cadena de consulta (queryString) = lastName=Burke&zipcode=02115

Interfaz uniforme y compacta

La manipulación de cualquier recurso se realiza mediante un pequeño conjunto de operaciones (métodos HTTP) predefinidas. Típicamente, el acceso/modificación/creación/eliminación de un recurso se realiza empleando los siguientes métodos HTTP:  GET, PUT, POST y DELETE

Comunicación sin estado

Los servicios web no mantienen estado asociado al cliente. Cada petición que se realiza a ellos es completamente independiente de la siguiente.

HATEOAS (Hypermedia As The Engine Of Application State)

La representación de un recurso incluye datos (direcciones o enlaces, por ejemplo) que facilitan al cliente la transición a estados o recursos relacionados.

Desarrollo de Servicios Web

Para el desarrollo de servicios web REST se emplean herramientas que facilitan el procesamiento de las solicitudes realizando al menos las siguientes tareas:

  • Procesan las solicitudes web extrayendo los datos enviados desde un cliente
  • Emparejan/enrutan las solicitudes web con la ejecución de algún método en una clase Java con los métodos para manipular el recurso REST.
  • Procesan los resultados de los métodos para generar la respuesta web en el formato especificado para el recurso o solicitado por el cliente.

Referencias

[1] RESTful Java with JAX-RS 2.0
[2] RESTful Java Patterns and Best Practices
[3] Introducción a Servicios REST

Leave a Reply