You are on page 1of 4

Consuming REST APIs with RESTEasy

Client

https://howtodoinjava.com/resteasy/resteasy-client-for-consuming-rest-apis/

So far in this blog, we have been learning about building RESTful webservices which are
server side components. In this post, we will learn to build a RESTful client for consuming
the webservices written in previous posts.

I will be re-using the code base written for RESTEasy + JAXB xml example.

The APIs which I will be accessing are as defined.

@GET

@Path("/users/{id}")

public User getUserById (@PathParam("id") Integer id)

  User user = new User();

  user.setId(id);

  user.setFirstName("demo");

  user.setLastName("user");

  return user;

 
@POST

@Path("/users")

public User addUser()

   //Some code

To build a RESTful client using client capabilities of JAX-RS RESTEasy, follow given
instruction.

1) Verify following RESTEasy dependencies

<!-- core library -->


<dependency>

  <groupId>org.jboss.resteasy</groupId>

   <artifactId>resteasy-jaxrs</artifactId>

  <version>2.3.1.GA</version>

</dependency>

<dependency>

  <groupId>net.sf.scannotation</groupId>

  <artifactId>scannotation</artifactId>

  <version>1.0.2</version>

</dependency>

<!-- JAXB provider -->

<dependency>

  <groupId>org.jboss.resteasy</groupId>

  <artifactId>resteasy-jaxb-provider</artifactId>

  <version>2.3.1.GA</version>

</dependency>

2) Write the client code to access the GET API as below

public static void sampleResteasyClientGETRequest() throws Exception

  //Define the API URI where API will be accessed

  ClientRequest request = new


ClientRequest("http://localhost:8080/RESTfulDemoApplication/user-
management/users/10");

   

  //Set the accept header to tell the accepted response format

  request.accept("application/xml");

   

  //RESTEasy client automatically converts the response to desired objects.

  //This is how it is done.

  //Populate the response in user object

  ClientResponse<User> response = request.get(User.class);

   

  //First validate the api status code


  int apiResponseCode = response.getResponseStatus().getStatusCode();

  if(response.getResponseStatus().getStatusCode() != 200)

  {

    throw new RuntimeException("Failed with HTTP error code : " +


apiResponseCode);

  }

   

  //Get the user object from entity

  User user = response.getEntity();

   

  //verify the user object

  System.out.println(user.getId());

  System.out.println(user.getFirstName());

  System.out.println(user.getLastName());

3) Write the client code to access the POST API as below

public static void sampleResteasyClientPostRequest() throws Exception

  User user = new User();

  user.setId(100);

  user.setFirstName("Lokesh");

  user.setLastName("Gupta");

   

  StringWriter writer = new StringWriter();

  JAXBContext jaxbContext = JAXBContext.newInstance(User.class);

  Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

  jaxbMarshaller.marshal(user, writer);

   

  //Define the API URI where API will be accessed

  ClientRequest request = new


ClientRequest("http://localhost:8080/RESTfulDemoApplication/user-
management/users");

   
  //Set the accept header to tell the accepted response format

  request.body("application/xml", writer.getBuffer().toString());

   

  //Send the request

  ClientResponse response = request.post();

   

  //First validate the api status code

  int apiResponseCode = response.getResponseStatus().getStatusCode();

  if(response.getResponseStatus().getStatusCode() != 201)

  {

    throw new RuntimeException("Failed with HTTP error code : " +


apiResponseCode);

  }

Source code download

Happy Learning !!

You might also like