4

我尝试通过 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);

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

亲切的问候

4

4 回答 4

14

遗憾的是,原因是 PathParam 的导入错误。所以给我的办公桌一个重要的说明......如果未经检查的事情不起作用......检查由IDE生成的导入。

于 2015-04-13T17:35:42.907 回答
6

{}方法参数中不需要,只需给出名称即可。尝试以下操作:

 public Response getUser(@PathParam("id") String id) 
于 2015-04-09T07:38:46.790 回答
4

导入可以默认为:

import javax.websocket.server.PathParam;

将其替换为来自 JAX-RS API 的那个:

import javax.ws.rs.PathParam;
于 2018-05-31T15:20:23.197 回答
2

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

于 2018-07-05T18:29:28.897 回答