更新现有资源

时间:2014-01-04 18:55:39

标签: java rest jersey

我正在学习许多教程中的其余内容,例如(http://www.vogella.com/tutorials/REST/article.html)。 我的问题是:如何更新现有资源?例如我创建的资源(id = 1)包含:id,age然后我改变了年龄。我使用上面的教程创建了我的Rest服务,但是PUT方法不能像我预期的那样工作。

Todo todo = new Todo("1", "23");  // id and age 
ClientResponse response = service.path("rest").path("todos")
    .path(todo.getId()).accept(MediaType.APPLICATION_XML)
    .put(ClientResponse.class, todo);

String newAge = "24";

如何更新此现有资源? (23替换为newAge)


好的,但我有点困惑......我以为我修改了这个功能?

@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response putTodo(JAXBElement<Todo> todo) {
Todo c = todo.getValue();
return putAndGetResponse(c);

private Response putAndGetResponse(Todo todo) {
Response res;
if(TodoDao.instance.getModel().containsKey(todo.getId())) {
  res = Response.noContent().build();
} else {
  res = Response.created(uriInfo.getAbsolutePath()).build();
}
TodoDao.instance.getModel().put(todo.getId(), todo);
return res;

}

我有类似的Rest服务,所以我基于教程中的示例。

1 个答案:

答案 0 :(得分:0)

为了更新资源,您需要在服务器端实现REST API。您发布的代码位于客户端。因此,您可以在服务器端添加以下方法以允许PUT方法:

@Path("todos/{id}")
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response updateAge(@PathParam("id") String id, @QueryParam("age") int newAge) {
    // code to return the response to update the age ...

}