How to do it...

  1. First, we create a User POJO:
public class User implements Serializable{

private String name;
private String email;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}
}
  1. Then we create a class with two methods (endpoints) for returning User:
@Path("userService")
public class UserService {

@GET
@Path("getUserCoupled/{name}/{email}")
@Produces(MediaType.APPLICATION_JSON)
public Response getUserCoupled(
@PathParam("name") String name,
@PathParam("email") String email){
//GET USER CODE

return Response.ok().build();
}

@GET
@Path("getUserDecoupled")
@Produces(MediaType.APPLICATION_JSON)
public Response getUserDecoupled(@HeaderParam("User")
User user){
//GET USER CODE

return Response.ok().build();
}
}
  1. Finally, we create another service (another project) to consume UserService:
@Path("doSomethingService")
public class DoSomethingService {

private final String hostURI = "http://localhost:8080/";
private Client client;
private WebTarget target;

@PostConstruct
public void init() {
client = ClientBuilder.newClient();
target = client.target(hostURI + "ch08-decoupled-user/");
}

@Path("doSomethingCoupled")
@Produces(MediaType.APPLICATION_JSON)
public Response doSomethingCoupled(String name, String email){
WebTarget service =
target.path("webresources/userService/getUserCoupled");
service.queryParam("name", name);
service.queryParam("email", email);

Response response;
try {
response = service.request().get();
} catch (ProcessingException e) {
return Response.status(408).build();
}

return
Response.ok(response.readEntity(String.class)).build();
}

@Path("doSomethingDecoupled")
@Produces(MediaType.APPLICATION_JSON)
public Response doSomethingDecoupled(User user){
WebTarget service =
target.path("webresources/userService/getUserDecoupled");

Response response;
try {
response = service.request().header("User",
Entity.json(user)).get();
} catch (ProcessingException e) {
return Response.status(408).build();
}

return
Response.ok(response.readEntity(String.class)).build();
}
}
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
13.58.51.36