【问题标题】:How to do multiple of operations in Java Webservice如何在 Java Webservice 中进行多项操作
【发布时间】:2014-11-04 08:16:56
【问题描述】:

我正在使用Java/REST/Jersey 网络服务。

我有一个用户服务,

..../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
...

【问题讨论】:

    标签: java web-services rest servlets jersey


    【解决方案1】:

    您可以使用模式定义服务端点。

    你应该检查你的端点,因为/rest/users/get/username 似乎对我来说毫无意义。如果你想获取一些东西,你将使用 GET 方法。不需要在 URL / Endpoint 中有这个。代码示例:

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

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

    【讨论】:

    • 但是您所显示的内容看起来很模糊,我希望 API 不仅可以执行用户操作,还可以执行多项操作,我希望它执行 ../users 操作,并且我还希望它执行 ../Searches 操作和其他东西,我喜欢有它试图做的事情的名字。我想我找到了我想要的答案,我可以将它们全部映射到一个休息区,例如 ../rest/users 、 .../rest/sports 、 ...rest/searches ..
    • 日本,你可以把所有东西都放在一个 /rest 资源中。但我建议您将其拆分为多个资源类。只需为您想要拥有的每种类型的资源构建资源类,用户类;体育课;类搜索 ... 并定义 (f.e. @Path("/users")) 以便 jersey 可以完成剩下的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2015-02-14
    • 2014-12-29
    • 2017-07-10
    • 2012-07-06
    相关资源
    最近更新 更多