Para consumir os dados servidos pelo servidor usando Ajax, podemos usar o CORS (Cross-Origin Resource Sharing). Ele consiste de 2 headers, um na requisiçáo e um na resposta.
Setando header Access-Control-Allow-Origin
com JAX-RS:
// Alteraramos o método buscaPagamento para usar um ResponseBuilder
// e setar o header
@GET
@Path("/{id}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Response buscaPagamentoCors(@PathParam("id") Integer id) {
Pagamento pagamento = repositorio.get(id);
return Response
.status(Response.Status.ACCEPTED)
.entity(pagamento)
.header("Access-Control-Allow-Origin", "*")
.build();
}
Para consumir esses dados via JavaScript de forma simplificada, podemos usar uma biblioteca com o jQuery, que ja seta automaticamente o header Origin
na requisiçáo:
$.ajax({
url: 'http://localhost:8080/fj36-webservice/cors/1',
success: function(dados) {
console.log(dados);
},
// Opcional: Podemos setar que queremos buscar o json
dataType: 'json'
})