所以,在我的资源类中,我有以下内容:
@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);
}
如果是null
name参数,则返回所有的Carta
实例。