JAX-RS,路径参数不起作用
JAX-RS, path params don't work
我尝试通过 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 = ClientBuilder.newClient();
Response response = client.target(TestPortProvider.generateURL("/user")+"/abc").request().get(Response.class);
然后方法被调用但参数为空。如果我从 GET url 中删除 "abc"
,则不会调用该方法。另外,如果我删除 @Path("{id}")
它也不起作用。似乎有一个参数,但它无缘无故为空。也许有人可以帮我解决这个问题。
亲切的问候
方法参数中不需要{}
,直接给出名称即可。尝试以下操作:
public Response getUser(@PathParam("id") String id)
很遗憾,原因是 PathParam 导入错误。所以在我的办公桌上写了一个大便条...如果未经检查的东西不起作用...检查您的 IDE.
生成的导入
导入可以默认为:
import javax.websocket.server.PathParam;
将其替换为 JAX-RS API:
import javax.ws.rs.PathParam;
它不起作用的原因是 PathParam 的错误导入。所以导入 javax.ws.rs.PathParam 并再次检查。
我尝试通过 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 = ClientBuilder.newClient();
Response response = client.target(TestPortProvider.generateURL("/user")+"/abc").request().get(Response.class);
然后方法被调用但参数为空。如果我从 GET url 中删除 "abc"
,则不会调用该方法。另外,如果我删除 @Path("{id}")
它也不起作用。似乎有一个参数,但它无缘无故为空。也许有人可以帮我解决这个问题。
亲切的问候
{}
,直接给出名称即可。尝试以下操作:
public Response getUser(@PathParam("id") String id)
很遗憾,原因是 PathParam 导入错误。所以在我的办公桌上写了一个大便条...如果未经检查的东西不起作用...检查您的 IDE.
生成的导入导入可以默认为:
import javax.websocket.server.PathParam;
将其替换为 JAX-RS API:
import javax.ws.rs.PathParam;
它不起作用的原因是 PathParam 的错误导入。所以导入 javax.ws.rs.PathParam 并再次检查。