如何在 JAX-RS API 中的 @GET 中创建多个 @Path?
How to make multiple @Path in a @GET in JAX-RS API?
因此,在我的资源 class 中,我有以下内容:
@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 获取。我需要添加第三个 get by String 但我失败了@params。我需要将其添加到资源 class:
@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
名称参数的情况下,将返回所有 Carta
个实例。
因此,在我的资源 class 中,我有以下内容:
@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 获取。我需要添加第三个 get by String 但我失败了@params。我需要将其添加到资源 class:
@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
名称参数的情况下,将返回所有 Carta
个实例。