我正在使用Java/REST/Jersey
网络服务。
我有一个用户服务,
..../rest/users/get/username
..../rest/users/get/all
... 我也想做其他事情,比如运动
.../rest/sports/get/sport
.../rest/sports/play..
我知道我可以将用户映射到rest1
servlet和sports到rest2
servlet,实际上它就是我现在所拥有的。但是,有没有办法在一个servlet中同时做这两件事(用户和体育&...)?我只是不喜欢我会rest1,rest2,rest3,rest4
...
..../rest/users/get/username
..../rest/sports/play
...
答案 0 :(得分:0)
您可以使用模式定义服务端点。
您应该检查自己的终结点,因为/rest/users/get/username
似乎对我没有任何意义。如果你想获取某些东西,你将使用GET方法。无需在URL /端点中使用此功能。代码中的示例:
@Path("/{parameter: rest1|rest2|rest.n}/users")
public class Users {
// [rest1|rest2|...]/users/{userID}/username
@GET
@Path("/{userID}/username")
@Produces({MediaType.APPLICATION_JSON,...})
public Response getUserUsername(@PathParam("userID") String userID) {
// ... return username for specific user
}
// [rest1|rest2|...]/users/usernames
@GET
@Path("/usernames")
@Produces({MediaType.APPLICATION_JSON,...})
public Response getUsernames() {
// ... return all usernames
}
如果你真的想把它放在一个资源类中:
@Path("/{parameter: rest1|rest2|rest.n}")
public class Rest {
@GET
@Path("/users")
@Produces({MediaType.APPLICATION_JSON,...})
public Response getUsers() {
// ...
}
@GET
@Path("/sports")
@Produces({MediaType.APPLICATION_JSON,...})
public Response getSports() {
// ...
}
......但请不要这样做;)