我有一个对某些对象执行CRUD的RESTful接口:
class Foo {
String id;
...
}
更新声明看起来像:
public class FooCRUD {
@PUT
@Path("/foos/{id}")
public void replace(@PathParam("id") id, Foo foo){...}
}
但是Foo
已经包含id
。我想执行以下操作,但似乎不起作用:
class Foo {
@PathParam("id")
String id;
...
}
public class FooCRUD {
@PUT
@Path("/foos/{id}")
public void update(Foo foo){...}
}
是否有某种方法可以避免向该方法添加额外的参数?
您尝试使用@PathParam进行的操作将无法正常工作,您有两种方法可以这样做:
First:从路径参数中删除id
,并从Foo
类表示的主体中获取其值,如下所示:
public class FooCRUD {
@PUT
@Path("/foos")
public void update(@RequestBody Foo foo){...}
}
第二:您可以像完成操作一样保留PUT
请求,然后将路径参数中的id
分配给方法中的Foo
对象,如下所示:
public class FooCRUD {
@PUT
@Path("/foos/{id}")
public void update(@PathParam String id, @RequestBody Foo foo){
foo.id=id;
...
}
}