I am trying to create a restful service, using GAE and RESTlet on the server side and jQuery on the client side. Dispite the very poor documentation on RESTlet, I am determined to familiarise myself with a restful framework. However, I can't even get the basic functionality out of it.
The problem I have is that out of GET, POST, PUT and DELETE, only DELETE requests appear to deliver the data part.
The calls are made like this:
function put() {
try {
$.ajax({
url : url,
type : "PUT", //Same for GET, POST and DELETE
data : data,
success : function(data) {
try {
$("#results").text(data);
} catch (e) {
alert(e);
}
}
});
} catch (e) {
alert(e);
}
}
On the server-side I have a resource attached on a router, and it goes like this:
public class TaskResource extends ServerResource
{
String userID = "jada";
@Override
public void doInit()
{
super.doInit();
userID = (String) getRequestAttributes().get("user");
}
@Get
public String toString(String str)
{
return "GET: task of " + userID + " ||| DATA: " + str;
}
@Put
public String putit(String str)
{
return "PUT: task of " + userID + " ||| DATA: " + str;
}
@Post
public String postit(String str)
{
return "POST: task of " + userID + " ||| DATA: " + str;
}
@Delete
public String deleteit(String str)
{
return "DELETE: task of " + userID + " ||| DATA: " + str;
}
}
In the four cases above, as str, GET gets a null argument (understandable), PUT and POST get empty strings and DELETE gets the data actually sent.
I have experimented with changing the type of the arguments (to Representation or Form) and with more specific annotations (e.g @Get("xml")). No success so far.
Any recommendations are welcome.