Desarrollo de servicios web REST

La especificación JAX-RS 2.0

De manera similar a JPA 2.x, JAX-RS 2.0 es una especificación técnica que describe las interfaces de programación y los componentes de configuración necesarios para desarrollar servicios REST. Existen varias implementaciones de esta especificación como Jersey, RESTeasy o Apache CXF entre otras. Además  de implementar la especificación JAX-RS 2.0, cada implementación ofrece funcionalidades extras en términos de facilidad de configuración, desempeño, etc. En los apartados y artículos siguientes se demuestra la creación de servicios REST empleando Jersey.

Finalmente, al igual que en el caso de la persistencia de objetos, existen herramientas que plantean un enfoque alternativo a la especificación JAX-RS; un ejemplo destacado de este tipo de herramientas es Restlet

Uso de Jersey para el desarrollo servicios web REST

Jersey define el concepto de “aplicación” como una abstracción  empleada para declarar recursos REST independiente del entorno de ejecución que hospedará los servicios web.

Configuración de la aplicación en un servidor web java

La configuración de una aplicación Jersey varía en función del entorno de ejecución; el recurso recomendado para explorar las diversas alternativas es la guía de usuario (Jersey User Guide).

En el siguiente vídeo se muestran las alternativas disponibles cuando Jersey se despliega como una aplicación web en el servidor web Java Tomcat 7.x (los servidores web java también se conocen como contenedores de servlets):

Configuración de los recursos REST

Aunque con Jersey es posible  configurar los recursos REST programáticamente (escribiendo código), es mucho más sencillo emplear las anotaciones JAX-RS definidas para este propósito. Entre las anotaciones JAX-RS más usuales para configurar recursos están:

  • @Path. Especifica la ruta de acceso relativa para una clase o método, empleada para emparejar la ruta (path) del URI empleado en la solicitud web con el código java.
  • @GET, @POST, @PUT, @DELETE. Especifican el método HTTP de un recurso, empleada para emparejar el método HTTP empleado en la solicitud web con el código java.
  • @Produces. Especifica los formatos (conocidos también como tipos MIME) de la respuesta web enviada al solicitante.
  • @PathParam. Empareja un elemento de la ruta del URI empleado en la solicitud web con un parámetro en un método.
  • @QueryParam. Empareja un elemento de la cadena de consulta del URI empleado en la solicitud web con un parámetro en un método.

En el siguiente vídeo se demuestra el uso de estas anotaciones para en el desarrollo de una clase que permite operar con un recurso REST  (se emplea Postman, una aplicación del navegador Google Chrome para preparar y enviar las solicitudes web):

Referencias

[1] JAX-RS

[2] Jersey User Guide

[3] Introducción a JSON

[4] REST Cook Book

Leave a Reply