如何在Java Webservice中执行多个操作

时间:2014-09-10 15:35:53

标签: java web-services rest servlets jersey

我正在使用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
...

1 个答案:

答案 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() {
        // ...
    }

......但请不要这样做;)