Hey all,
We're starting to get a bit further with our project now. Actually got the RESTful web app deployed, and taking some calls.
I am confused on a few things tho. Is there a good doc that explains all the details of Jersey, including handling requests, setting response codes, headers, body, etc?
That said, I am using the NetBeans Jersey plugin, created a resource, my code looks something like:
@Path("test")
public class TestResource {
@Context
private UriInfo context;
public TestResource() {
}
@GET
@ProduceMime("application/xml")
public String getXml() {
return "test";
}
@POST
@ConsumeMime("application/xml")
public void postXml(String content) {
// do something that creates something...
// if all works, set status to 201, and set Location header to URL
// if fail, set appropriate Status code.
// HOW DO I SET RESPONSE CODE, BODY, LOCATION, HEADER INFO HERE?
}
}
So in the above, I am sending in some XML as the content object to postXml. I do something with that XML, create something, etc. However, the method that the wizard creates does not set a return value. Where as HttpServeltResponse returns a response object that you can set headers on, etc... there seems to be no way after the call is made for me to indicate the response code, body (if I want to return one), and the Location header to return the proper URL to reference the created resource.
Same question applies to the GET method. I want to return a chunk of XML, or JSON maybe as part of the response Body, along with status code, etc. How do I manipulate the response that goes back. Looking at the UriInfo context variable doesnt appear to offer any methods or objects I can use to set response info.
Is it ok to do something like
@POST
@ConsumeMime("application/xml")
@ProduceMime("text/html")
public String someMethod(String contents){}
Such that I can handle xml input but return, html (or maybe json)? If so, to handle say xml, json or url-encoded form data in one call, and return json or xml back, how would I figure out the format coming in, and how do I specify the return format (again, how do I manipulate the response object so the Content-Type header going back is set based on the body going back).
Thanks all.