【发布时间】:2021-09-29 00:54:21
【问题描述】:
所以,在我的资源类中,我有以下内容:
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Carta> get() {
return repositorio.getAll();
}
@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public Carta getById(@PathParam("id") int id) {
return repositorio.getID(id);
}
两者都有效,一个是通用获取(将获取所有),另一个是通过 ID 获取。我需要通过 String 添加第三个 get,但 @params 失败了。我需要将此添加到 Resource 类中:
@GET
@Path("{nome}")
@Produces(MediaType.APPLICATION_JSON)
public List<Carta> getNome(@PathParam("nome") String nome) {
return repositorio.getString(nome);
}
如果我评论 getById 行,我的 getByString 工作,代码很好,我只需要同时使两个函数,如果它收到一个数字,它会查找一个 ID,如果它是一个字符串它会查找名称和描述。另外,我想知道创建更多端点是否是更好的代码实践?像 /search/byid/xx 和 /search/byname/xxx 而不是一般的 /search/xxx?谢谢。
【问题讨论】:
-
您可以使用正则表达式来区分整数和字符串路径参数。类似于
@Path("{id : \\d+}")的整数。您可以阅读有关 JAX-RS link 的 URI 优先级的更多信息