我正在使用 Java/REST/Jersey
Web 服务。
我有一个用户服务,
..../rest/users/get/username
..../rest/users/get/all
...我还想做其他事情,比如运动
.../rest/sports/get/sport
.../rest/sports/play..
我知道我可以将用户映射到 rest1
servlet,并将运动映射到 rest2
servlet,事实上这就是我现在所拥有的。但是,有没有一种方法可以在一个 servlet 中同时完成这两件事(用户和体育运动等等)?我只是不喜欢这样的事实:我将有 rest1,rest2,rest3,rest4
...
..../rest/users/get/username
..../rest/sports/play
...
您可以使用模式定义服务端点。
您应该检查您的端点,因为 /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() {
// ...
}
...但请不要这样做;)
我是一名优秀的程序员,十分优秀!