泽西多次获得相同路径的响应?

时间:2015-08-27 13:07:53

标签: java web-services rest jersey

目前我正在使用Jetty + Jersey来根据@GET参数设置不同的响应,如果传递了id,它将返回任务,如果not返回所有任务。

@GET
@Path("task")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Task> getTask(){
    return tasks;
}

@GET
@Path("task")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Task> getTasks(@QueryParam("id") String id){
    return task(uuid);
}

这可能吗?我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是不可能的。我们不能将多个GET方法映射到同一路径。你能做的是:

@GET
@Path("task")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Task> getTask(@QueryParam("id") String uuid){
    if (id == null) {
        return tasks;
    }
    return task(uuid);
}

通过这条路径,你只需要在@Path中精确地预测你所期望的。 例如:

@GET
@Path("task")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Task> getTask(){
    return tasks;
}

@GET
@Path("task/{id}")
@Produces(MediaType.APPLICATION_JSON)
public ArrayList<Task> getTasks(@PathParam("id") String id){
    return task(uuid);
}