如何从Spring Data REST生成的表示中删除超媒体元素?

时间:2016-05-26 18:14:51

标签: spring rest spring-boot spring-data spring-data-rest

将Spring Data用于我的REST API时,当前返回的响应包括doc.at_css('.main-header span').text 字段:

_links

有没有办法生成输出,以便隐藏{ "_embedded": { "users": [ { "imageUrl": "some_image_url", "name": "some name", "id": "57420b2a0d31bb6cef4ee8e9", "_links": { "self": { "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9" }, "user": { "href": "http://localhost:8080/users/57420b2a0d31bb6cef4ee8e9{?projection}", "templated": true } } }, ... 字段? e.g:

_links

我发现因为我公开了{ "_embedded": { "users": [ { "imageUrl": "some_image_url", "name": "some name", "id": "57420b2a0d31bb6cef4ee8e9", }, ... 字段,id并不是真的有必要,而且大部分时间都是我的回答。

1 个答案:

答案 0 :(得分:12)

没有。超媒体是REST API的基本特征,Spring Data REST大量使用它来允许您构建可以使用响应中存在的链接导航到相关资源的客户端。

当然,您可以愚弄客户,不要使用该信息,但这会导致更紧密的耦合(因为您无法再更改服务器端的URI,您的客户希望与专用的人交谈服务器,而使用超媒体,你可以将它指向不同的服务器等。)。

与许多其他自称的REST框架相比,框架设计的一个关键方面是尊重REST中的基本原则并明确地利用它们。或者至少,不要制定激励措施来轻易打破它们。这在reference documentationproject website中清楚地表达出来。在this presentation on Spring Data RESTthis one on Domain-Driven Design & REST中了解有关关键设计决策的更多信息。