我们可以为同一个端点同时实现@pathparam 和@queryparam 吗?

Can we implement both @pathparam and @queryparam for the same endpoint

我正在自学 REST API 开发。作为其中的一部分,我正在创建一个 Java 网络服务器。但是,我被卡住了,不知道如何进行。

我有一个名为 /users 的端点,用户将通过该端点 GET 数据。但是,我想实现查找用户和限制用户数量的选项 returned。例如:

为此,我决定使用 @QueryParam@PathParam。问题是:我可以在同一个方法中同时使用它们吗?

例如:

@Path("/User") 
@Produces({"application/json"})
public List<User> getUsers() {
    // ...
}

@GET
@Path("/{id}")
public JSONObject getUserwithId(@PathParam("id") int id) {
    return jsonObjectwithId;
}

@Path("?count")
public JSONObject getUserwithCount(@QueryParam("count") int count) {
    return noOfusers;
}

我想知道这是否可行

是的,我以前在我个人开发的 Web 服务上这样做过。这并不常见,因为 REST 接口通常不值得所需的复杂性。但是,@QueryParam@PathParam 被同一个方法使用是完全允许的。我看到您正在使用 Jersey。基于 this thread,如果您实际使用的是 Jersey 1.x,如果您当前遇到问题,则可能需要升级。