当前位置: 首页 > 知识库问答 >
问题:

使用JAX-RS的REST摘要对象

裴意
2023-03-14

我正在使用JAX-RS编写一个RESTful接口。当前正在编写索引资源以查看系统中有哪些对象可用。

@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我想返回一个较短的对象形式,只包含IDTitleYearProduced属性,而第二条路由将返回完整的对象。

我希望这是很容易解决的,但是我不是一个Java专业的人,我希望有注释或某种帮助者来帮助解决这方面的问题。

编辑:如果没有,我想最简单的方法是创建一个摘要类(例如:moviesummary)并返回它。

共有1个答案

申屠健
2023-03-14

我认为你的建议很好。您可以创建一个辅助对象来表示您的API将返回的内容。这称为DTO。您可以为一个实体对象创建多个DTO,我认为这就是您的情况。例如,在索引上返回MovieSummaryDTo并在其他任何地方返回MovieDTo

此外,您可以将所有注释以及通常不属于数据访问层的任何“东西”放入这个新对象中。因此,在某种程度上,这有助于分离关注点,并保持您的实体对象非常干净。

然而,这引入了一个新的问题:现在您必须在实体和DTO之间进行转换。

    null

我只想补充一点,在序列化时忽略某些属性是可能的。如果您正在使用Jackson(您应该使用),您可以使用@jsonignore注释属性,并且该属性不会被序列化。然而,我认为这不是您需要的,因为有时您想忽略额外的属性,但有时却不是。

希望这有帮助。编码快乐!

 类似资料:
  • 为了实现上面的逻辑,我需要客户机发送他的监听器信息和请求(基本上是URI)。这是在处理完请求后,将请求状态更新到客户端。 使用JAX-RS处理长时间运行的操作

  • webresources定义如下。这个类是由NetBeans自动添加的。

  • JAX-RS (JSR 311) 是一个社区驱动的标准用于使用 Java 构建 RESTful Web 服务。

  • 我正在开发一个安全的web应用程序,它可以进行金融交易,并在其中使用spring。哪个更适合用于安全性、JAX-RS服务或SpringREST服务?我考虑使用spring,因为我们已经在应用程序中使用它了,如果它提供了功能,那么为什么要使用JAX-RS,但正如我所说的,它是一个高度安全的web应用程序,人们将在其中购买东西并进行金融交易,所以我必须看看哪个更适合使用。 我看了下面的博客还是有点困惑

  • 问题内容: 我正在尝试使用异步响应构建REST Web服务。 我已经在网上解决了这个错误,但是,没有一种解决方案对我有用。我不确定如何去做。 这是REST服务的代码,它具有AsyncResponse,并且取自,我将在下面提供该文件中指定的jar文件。问题是,在部署战争时,我遇到一个例外: 我的课如下: 我的Maven文件如下: 问题答案: 是 当应用程序试图调用一个抽象方法抛出 。 是中的抽象方法

  • 问题内容: 我有办法 现在我知道我可以将一个对象以json格式发布,只需将其放入正文即可。但是可以做多个对象吗?如果是这样,怎么办? 问题答案: 答案是否定的。 原因很简单:这与您可以在方法中接收的参数有关。它们必须与请求相关。对?因此,它们必须是标题或cookie或查询参数或矩阵参数或路径参数或请求正文。(仅是为了讲述完整的故事,还有其他类型的参数称为上下文)。 现在,当您在请求中收到JSON对