sábado, 11 de enero de 2020

Jersey: Como hacer un WS Client facilmente

Ya estuvimos viendo en su día, aquí, cómo hacer un servicio web con Jersey. Hoy veremos cómo hacer su cliente. Y para el ejemplo nos basaremos en el Web Service que creamos en su día y sobre el que hicimos pruebas con REST Assured, también lo podéis ver aquí.

La verdad, es que es bastante intuitivo, así que para utilizaremos un CRUD de ejemplo y así podremos ver las distintas opciones que nos ofrece. En forma resumida una llamada se compondrá de los siguientes elementos.
  • Utilizaremos un objeto de tipo javax.ws.rs.client.Client
  • Pasaremos la URL que queremos invocar.
  • Pasaremos los URI o Query params asociados a esa URL, opcional.
  • Invocaremos al método request, que nos permite realizar la invocación.
  • Indicaremos el tipo de método REST asociado a la invocación y dependiendo del método, que tipo de objeto devuelve o recibe.
Ejemplo para GET:

private static String REST_URI = "http://localhost:8080/JerseyExample/rest/book";
    
public Book getOne(final Integer id) {
    return client.target(REST_URI).path(String.valueOf(id))
                 .request(MediaType.APPLICATION_JSON).get(Book.class);
}

Con el método path, podemos añadir URI params asociados a la URL. Y con el método queryParam podríamos añadir Query Param, indicando el nombre del parámetro y su valor asociado.

El método POST será muy similar, solo que en vez de indicar qué tipo de objeto genera, indicaremos que tipo de objeto recibe.

public Response saveOne(final Book book) {
    return client.target(REST_URI).request(MediaType.APPLICATION_JSON)
                 .post(Entity.entity(book, MediaType.APPLICATION_JSON));
}

El método PUT será una mezcla de ambos

public Response updateOne(final Integer id, final Book book) {
    return client.target(REST_URI).path(String.valueOf(id))
                 .request(MediaType.APPLICATION_JSON)
                 .put(Entity.entity(book, MediaType.APPLICATION_JSON));
}

Y el delete el más sencillo

public Response deleteOne(final Integer id) {
    return client.target(REST_URI).path(String.valueOf(id))
                 .request(MediaType.APPLICATION_JSON).delete();
}

Como veis todo muy intuitivo. Si queréis aquí tenéis el código fuente. 

No hay comentarios:

Publicar un comentario