24

我真的很喜欢 Spring Data Rest 为您编写的所有样板代码,但我宁愿只有一个“常规?” 没有所有 HATEOAS 东西的 REST 服务器。主要原因是我在客户端使用 Dojo Toolkit,并且它的所有小部件和存储都设置为返回的 json 只是一个直接的项目数组,没有所有链接和类似的东西。有谁知道如何使用 java config 进行配置,以便我获得为我编写的所有 mvc 代码,但没有所有 HATEOAS 的东西?

4

2 回答 2

6

在阅读了 Oliver 的评论(我同意)之后,您仍然想从 spring boot 中删除 HATEOAS。

在包含您的 main 方法的类的声明上方添加以下内容:

@SpringBootApplication(exclude = RepositoryRestMvcAutoConfiguration.class)

正如 Zack 在评论中指出的那样,您还需要创建一个控制器来公开所需的 REST 方法(findAll、save、findById 等)。

于 2016-10-06T07:22:46.177 回答
5

所以你想要没有构成 REST 的东西的 REST?:) 我认为尝试改变(阅读:愚蠢)RESTful 服务器以满足设计不佳的客户端库是一个糟糕的开始。但这里是为什么超媒体元素对于这种工具是必要的基本原理(除了可能熟悉的一般基本原理)。

大多数 REST 社区一直对将域对象公开到 Web 持批评态度。主要是因为域对象的边界不一定是您想要提供资源的边界。然而,提供脚手架功能的框架(Rails、Grails 等)在过去几年中变得非常流行。所以 Spring Data REST 试图解决这个问题,但同时在宁静方面做一个好公民。

因此,如果您首先从一个普通的数据模型(没有太多关系的对象)开始,只想阅读它们,那么实际上不需要像 Spring Data REST 这样的东西。您需要编写的 Spring 控制器大约是 Spring Data 存储库之上的 10 行代码。当事情变得更具挑战性时,故事变得更加有趣:

  • 你如何编写一个没有硬编码 URI 的客户端(如果有,它不是特别安静)?
  • 你如何处理资源之间的关系?你如何让客户创建它们,更新它们等等?
  • 客户端如何发现可用的查询资源?它如何找出要传递的参数等?

如果您对这些问题的回答是:“我的客户不需要那个/没有能力这样做。”那么 Spring Data REST 可能是错误的库。您基本上构建的是基于 HTTP 的 JSON,但那时并没有什么真正让人放松的东西。如果它符合您的目的,这完全没问题,但是将具有明确设计约束的库硬塞进任意不同的东西(尽管看起来很相似),实际上想要完全忽略这些设计方面,首先是错误的方法。

于 2014-06-27T12:35:14.973 回答