【发布时间】:2019-12-16 07:53:10
【问题描述】:
我正在用java开发一个rest服务器,netbeans。 我有我的 GET 请求:
//myip/application/v1/cardapio/id=1
@Stateless
@Path("v1/cardapio")
public class CardapioResource {
@GET
@Produces("application/json")
@Path("id={id}")
public String getCardapio(@PathParam("id") int id) {
JsonArray array = (JsonArray) gson.toJsonTree(ejb.findById(id));
JsonObject obj = new JsonObject();
obj.add("dados", array);
return obj.toString();
}
}
它工作正常。
但我想做不同的事情,正如我在其他示例中看到的那样,我想用“?”标记变量的开头。
例如://myip/application/v1/cardapio/?id=1
@Stateless
@Path("v1/cardapio")
public class CardapioResource {
@GET
@Produces("application/json")
@Path("?id={id}")
public String getCardapio(@PathParam("id") int id) {
JsonArray array = (JsonArray) gson.toJsonTree(ejb.findById(id));
JsonObject obj = new JsonObject();
obj.add("dados", array);
return obj.toString();
}
}
因此出现错误 404,找不到页面。
【问题讨论】:
-
但我想做不同的事情,正如我在其他示例中看到的那样,我想标记变量的开头您刚刚看到查询参数的正常用法。它不是控制器路由的一部分。恕我直言
@Path("id={id}")不是你想要的。你只是想映射到/并得到@QueryParam -
@Antoniossss 但是有办法做到这一点,我见过几个案例。我只是相信我走错了路。
-
是的,您正试图滥用 url 构造。您希望(无论出于何种原因)查询字符串成为路径的一部分。
标签: java json jersey jax-rs path-parameter