gpt4 book ai didi

java - Jersey @GET集合和@GET集合通过@QueryParam过滤

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:04 24 4
gpt4 key购买 nike

在我的应用程序中,用户可以注册,用户可以发布锻炼和对锻炼的评论。

我设计了以下资源和 URI:

USERS
/users
/users/{id}

WORKOUTS
/workouts
/workouts/{id}

COMMENTS
/workouts{id}/comments
/workouts{id}/comments/{id}

由于/workouts URI 返回时间线,我尝试映射用户的锻炼,例如/workouts?user=userId

我不知道如何区分获取所有集合和通过@QueryParam过滤的集合,因为:

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Practicas getPracticas() {
List<Practica> listaPracticas = practicaDao.getPracticas();
Practicas practicas = new Practicas();
practicas.setPracticas(listaPracticas);
return practicas;
}

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Practicas getPracticasUsuario(@QueryParam("idUsuario") int idUsuario) {
List<Practica> listaPracticas = practicaDao.getPracticasByUser(idUsuario);
Practicas practicas = new Practicas();
practicas.setPracticas(listaPracticas);
return practicas;
}

抛出以下异常:

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] A resource model has ambiguous (sub-)resource method for HTTP method GET and input mime-types as defined by @Consumes and @Produces annotations at Java methods public com.sporty.model.Practicas com.sporty.resource.PracticasResource.getPracticas() and public com.sporty.model.Practicas com.sporty.resource.PracticasResource.getPracticasUsuario(int) at matching regular expression /practicas. These two methods produces and consumes exactly the same mime-types and therefore their invocation as a resource methods will always fail.; source='org.glassfish.jersey.server.model.RuntimeResource@1cc465f']

解决方案是否在 URI 上添加另一个级别,例如/workouts/search?user=userId?

问题是否源于糟糕的 URI 设计?

提前致谢

最佳答案

我认为您正在寻找类似的东西:

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Practicas getPracticasUsuario(@QueryParam("idUsuario") Integer idUsuario) {
final List<Practica> listaPracticas;
if (idUsario != null) {
practicaDao.getPracticasByUser(idUsuario);
} else {
practicaDao.getPracticas();
}
Practicas practicas = new Practicas();
practicas.setPracticas(listaPracticas);
return practicas;

}

关于java - Jersey @GET集合和@GET集合通过@QueryParam过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com