我正在用Jersey和Jackson构建REST API。我使用本教程(http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/)开始使用Jackson。在与Jackson + Jersey发送JSON响应之前生成HMAC
我想在发送之前对响应进行签名。我怎样才能得到将生成的JSON字符串,以便我可以签名?
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Response getTrackInJSON() {
Track track = new Track();
track.setTitle("Enter Sandman");
track.setSinger("Metallica");
String HMAC = HMAC("[secret]", [track.toJson]);
return Response.status(201).entity(track).header("HMAC", HMAC).build();
}
我也想验证一个进来的请求的签名:
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) {
String rawRequestBody = [how to get the raw request?];
//get header
//verify HMAC
return Response.status(201).entity(result).build();
}
所以我最大的问题是如何获得这从一个对象产生,它将被发送之前的原始JSON字符串?
谢谢你的答案