我真的很喜欢Spring Data Rest为你写的所有样板代码,但我宁愿只是一个'常规?'没有所有HATEOAS东西的REST服务器。主要原因是我在客户端使用Dojo Toolkit,并且它的所有小部件和存储都被设置为返回的json只是一个直接的项目数组,没有所有链接和类似的东西。有没有人知道如何使用java配置配置它,以便我获得为我编写的所有mvc代码,但没有所有HATEOAS的东西?
答案 0 :(得分:8)
所以你想要没有构成REST的东西的REST吗? :)我认为尝试改变(阅读:哑巴)RESTful服务器以满足设计糟糕的客户端库是一个糟糕的开始。但是,为什么超媒体元素对于这种工具是必要的(除了可能熟悉的general rationale之外)。
大多数REST社区都经常看到将域对象暴露给Web。主要是因为域对象的边界不一定是您想要提供资源的边界。然而,在过去几年中,提供脚手架功能的框架(Rails,Grails等)已经变得非常流行。所以Spring Data REST正试图解决这个问题,但同时也是一个好的公民。
因此,如果您首先使用普通数据模型(没有很多关系的对象),只想阅读它们,那么实际上不需要像Spring Data REST这样的东西。您需要编写的Spring控制器在Spring Data存储库之上大约有10行代码。当事情变得更具挑战性时,故事变得更加有趣:
如果您对这些问题的回答是:"我的客户并不需要/不能做到这一点。",那么Spring Data REST可能是错误的库。你基本上构建的是JSON over HTTP,但没有什么比这更好的了。如果它符合你的目的,那就完全没问题了,但是把一个具有明确设计约束的图书馆整理成任意不同的(虽然看似很相似),实际上有点想要忽略这些设计方面,这首先是错误的做法。
答案 1 :(得分:5)
在阅读了Oliver的评论后(我同意这一点)并且您仍然希望从春季启动中删除HATEOAS。
在包含main方法的类的声明上面添加:
@SpringBootApplication(exclude = RepositoryRestMvcAutoConfiguration.class)
正如Zack在评论中所指出的,你还需要创建一个暴露所需REST方法的控制器(findAll,save,findById等)。