我正在学习许多教程中的其余内容,例如(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服务,所以我基于教程中的示例。
答案 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 ...
}