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