Ejemplo de API REST en Java con JAX-RS y Spring Boot

Publicado por pico.dev el .
blog-stack java planeta-codigo programacion
Comentarios

Java
Spring Framework

En Java a través de JAX-RS, una de entre las varias especificaciones de JavaEE, podemos desarrollar servicios web basados en REST y JSON. Estos servicios web al usar la infraestructura de la web y el protocolo HTTP podemos hacer uso de facilidades que proporciona como cacheo, protocolo seguro, HTTP/2, compresión o autenticación. Usando Spring Boot podemos desarrollar servicios web autocontenidos al igual que podemos hacer con las aplicaciones web tradicionales.

Para facilitar el inicio de los proyectos podemos usar Spring Initializr seleccionando los módulos web y JAX-RS con la implementación de referencia Jersey. Al proyecto creado deberemos añadir los servicios que queramos proporcionar. En el ejemplo añadiré uno muy sencillo que devuelva un nuevo mensaje creado en un servicio inyectado en la clase del recurso del servicio REST.

Esta es la definición del bean del servicio que creará el mensaje para el contenedor de inversión de control, también definimos el recurso del servicio REST para Jersey.

El servicio lo definimos en una interfaz y una clase que la implementa.

Es habitual que los servicios REST produzca como resultado un JSON como formato para devolver los datos. No necesitaremos hacer nada especial para convertir el Java Bean de la clase Message a JSON, de ello se encargará automáticamente JAX-RS. Con anotaciones como @QueryParam podemos obtener los parámetros del query string, de la URL o cabeceras enviadas.

Iniciada la aplicación con ./gradlew run y con la siguiente comando de curl y URL obtendremos el mensaje en formato JSON en la salida.

Al diseñar APIs REST más complejas que este sencillo ejemplo conviene conocer el término HATEOAS. Deberemos definir como organizar la información devuelta por los diferentes que los libros RESTful Web APIs y REST in Practice además de artículos con consejos sobre como diseñar APIs RESTful.

Una vez que disponemos del servicio REST podemos añadir autenticación y autorización con Keycloak como proveedor de OAuth.

El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando el comando ./gradlew run.

Yo apoyo al software libre