(超)媒体类型
Spring Data REST的默认设置使用HAL作为默认的超媒体表示格式,因此服务器将为给定的
Accept标头返回以下内容:
- 没有标题->
application/hal+json
-> HAL application/hal+json
->application/hal+json
->哈尔application/json
->application/json
-> HAL(这是默认配置)application/x-spring-data-verbose+json
->application/x-spring-data-verbose+json
->一种特定于Spring Data的格式(links
用于链接容器,并content
用作收集项的包装。
如果您配置
RepositoryRestConfiguration.setDefaultMediaType(…)为非HAL格式,则除非您明确要求,否则服务器将返回特定于Spring
Data的JSON格式
application/hal+json。诚然,配置选项可能有点误导,所以我提交了DATAREST-294进行了改进。该问题已在2014年的RC1(Dijkstra)中得到解决。
请注意,我们有效地需要一种超媒体格式,以便能够表达受管资源之间的关系并实现服务器的可发现性。因此,您不可能完全摆脱它。这主要是由于以下事实:如果暴露具有双向关系的实体或组成巨大的对象图,则很容易使服务器崩溃。
内联相关实体
如果您永远不希望链接到扇区并始终内联它们,则一个选择是首先简单地将扇区排除
SectorRepository为导出为REST资源。您可以通过使用注释存储库接口来实现此目的
@RepositoryRestResource(exported= false)。
要获得在下例中发布的表示形式,请查看Spring Data REST 2.1
M1中引入的投影功能。基本上,它允许您通过简单的界面在资源上创建与默认视图不同的可选视图。
您基本上可以定义一个接口:
@Projection(name = "foo", types = YourDomainClass.class)interface Inlined { // list all other properties Sector getSector();}如果将此接口放入域类的(子)程序包中,或通过
RepositoryRestConfiguration.projectionConfiguration()资源公开手动注册,则暴露的资源
YourDomainClass将接受request参数,
projection以便
foo在此示例中传入将按需呈现内联表示形式。
此提交对一般功能的更多信息,这提交已经定义的示例投影。



