JAX-RS,路径参数不起作用

时间:2015-04-09 07:33:05

标签: java rest jax-rs path-parameter

我尝试通过GET将参数传递给REST方法。

@GET
@Path("{id}")
public Response getUser(@PathParam("id") String id) {
    Query qry = em.createQuery("from User c WHERE id = :user_id");
    qry.setParameter("user_id", id);
    List<User> results = qry.getResultList();

    if(results.size() > 0) {
        return Response.ok(results.get(0),MediaType.APPLICATION_JSON_TYPE).build();
    } else {
        return Response.serverError().status(Response.Status.NOT_FOUND).build();
    }
}

如果我通过Rest Client通过以下方式调用它:

client = ClientBuilder.newClient();    
Response response = client.target(TestPortProvider.generateURL("/user")+"/abc").request().get(Response.class);

然后调用该方法,但参数为空。如果我从GET url中删除"abc",则不会调用该方法。此外,如果我删除@Path("{id}")它也不起作用。似乎有一个参数,但它没有任何理由是空的。也许有人可以帮我解决问题。

亲切的问候

4 个答案:

答案 0 :(得分:11)

遗憾的是,原因是PathParam导入错误。所以我的办公桌上有一个很大的注意事项...如果未经检查的东西不起作用...请检查您的IDE生成的导入。

答案 1 :(得分:6)

方法参数中不需要

{},只需输入名称即可。请尝试以下方法:

 public Response getUser(@PathParam("id") String id) 

答案 2 :(得分:3)

导入可以默认为:

import javax.websocket.server.PathParam;

将其替换为JAX-RS API中的一个:

import javax.ws.rs.PathParam;

答案 3 :(得分:2)

之所以不起作用,是因为 PathParam 的导入错误。因此,导入javax.ws.rs.PathParam并再次检查。