如何使多个@ path在jax - rs @ get API ?



所以,在我的资源类中,我有以下内容:

@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);
}

都可以使用,一个是通用get(将获取所有),另一个是按ID 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?谢谢。

您应该增强List<Carta> get()以支持按卡片名称过滤,而不是创建一个不同的端点。

预期的方法是这样使用@QueryParam注释:

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Carta> get(@QueryParam("name") String name) {
return repositorio.getCartas(name);
}

如果是nullname参数,则返回所有的Carta实例。

相关内容

  • 没有找到相关文章

最新更新