我有一个看起来像这样的网络服务:
@Path("/ws")
public class Ws {
@GET public Record getOne(@QueryParam("id") Integer id) { return record(id); }
@GET public List<Record> getAll() { return allRecords(); }
}
我的想法是我可以打电话:
http://ws:8080/ws?id=1
获取特定记录http://ws:8080/ws
获取所有可用记录但是,当我使用第二个网址时,第一个@GET
方法将使用空id
进行调用。
有没有办法在不使用不同路径的情况下实现我想要的目标?
我认为这可以通过Spring分别使用@RequestMapping(params={"id"})
和@RequestMapping
注释来实现第一个和第二个方法,但我不能在该项目中使用Spring。
答案 0 :(得分:4)
由于路径相同,因此无法将其映射到其他方法。如果使用REST样式映射更改路径
@Path("/ws")
public class Ws {
@GET @Path("/{id}") public Response getOne(@PathParam("id") Integer id) { return Response.status(200).entity(record(id)).build(); }
@GET public Response getAll() { return Response.status(200).entity(allRecords()).build(); }
然后你应该使用:
http://ws:8080/ws/1
获取特定记录http://ws:8080/ws
获取所有可用记录