El API de JAX-RS Client va a terminar por ser una de las más utilizadas , la llegada de las nuevas arquitecturas de Microservicios supondrá una explosión a la hora de crear servicios REST. Vamos a introducirla brevemente y ver como funciona. En este caso usaremos una aplicación de consola que invoque un servicio REST. Para ello construiremos un proyecto de Maven con varias dependencias.
<dependencies> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-jackson</artifactId> <version>2.23.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client --> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>2.23.1</version> </dependency> </dependencies>
Una vez instaladas las dependencias el uso del API es muy sencillo , en nuestro caso vamos a invocar un servicio REST que nos devuelve una lista de Personas. El primer paso es crear la clase Persona.
package com.arquitecturajava; import java.io.Serializable; public class Persona implements Serializable { private static final long serialVersionUID = 6285845014865471015L; private String nombre; private String apellidos; private int edad; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellidos() { return apellidos; } public void setApellidos(String apellidos) { this.apellidos = apellidos; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } }
JAX-RS Client API
Una vez disponemos de nuestro objeto de negocio usamos JAX-RS Client API e invocamos al servicio desde una aplicación de consola.
Vamos a ver el código:
Client client = ClientBuilder.newClient().register(new JacksonFeature()); Persona persona = client .target("http://localhost:3000/persona/pepe") .request(MediaType.APPLICATION_JSON).get(Persona.class); System.out.println(persona.getNombre()); System.out.println(persona.getApellidos()); System.out.println(persona.getEdad());
La aplicación imprimirá los datos por pantalla:
Solicitar que nos devuelta la lista de personas es similar pero hace falta apoyarse en genéricos.
package com.arquitecturajava; import java.util.List; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType; import org.glassfish.jersey.jackson.JacksonFeature; public class ClienteRest2 { public static void main(String[] args) { Client client = ClientBuilder.newClient().register(new JacksonFeature()); List<Persona> personas = client .target("http://localhost:3000/persona") .request(MediaType.APPLICATION_JSON).get(new GenericType<List<Persona>>() { }); for(Persona p: personas) { System.out.println(p.getNombre()); System.out.println(p.getApellidos()); System.out.println(p.getEdad()); } } }
El resultado nos mostrará una lista de elementos.
Hemos realizado dos peticiones a un servicio REST que devuelve los datos en formato JSON usando JAX-RS Client API
Otros artículos relacionados :
Hola cecilio, ¿no te falta añadir el servicio REST? supongo que será similar a como indicas en: https://www.arquitecturajava.com/jax-rs-servicios-restfull-en-java/
[…] artículos relacionados: JAXRS-Client y JSON , REST JSON y Java ,JavaScript y […]