我正在使用 JAX-RS 编写一个 RESTful 接口。目前正在编写索引资源以查看系统中可用的对象。
我的问题是,在用户选择有问题的实际对象之前,返回电影对象的完整表示是昂贵且不必要的。
我的问题:
有没有办法控制 JSON 序列化过程以提供该对象的“短”版本以及长版本 - 或者我最好创建一个 viewmodel-esque 类来表示较短的形式?
使用电影数据库作为我的问题的一个工作示例:
@GET
@Path("/api/movie/")
@Produces(MediaType.APPLICATION_JSON)
public List<Movie> ListMovies() {
return entityManager.createQuery("FROM Movie", Movie.class).getResultList();
}
@GET
@Path("/api/movie/{movieId}")
@Produces(MediaType.APPLICATION_JSON)
public Movie GetMovie( @PathParam("movieId") Integer movieId ) {
return entityManager.find(Movie.class,movieId);
}
第一条路线/api/movie
我想返回只包含 , 和 属性的对象的较短形式ID
-Title
而YearProduced
第二条路线将返回完整的对象。
我希望这很容易解决,但是我不是一个 Java 人,我希望有注释或某种帮手来帮助解决这个问题。
编辑:如果没有,我怀疑最简单的方法是创建一个摘要类(即:)MovieSummary
并返回它。