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

Kev*_*ant 6 rest spring spring-data spring-data-rest spring-boot

将Spring Data用于我的REST API时,当前返回的响应包括以下_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
        }
      }
    },
...
Run Code Online (Sandbox Code Playgroud)

有没有办法产生输出,这样该_links字段是隐藏的?例如:

{
  "_embedded": {
  "users": [
    {
      "imageUrl": "some_image_url",
      "name": "some name",
      "id": "57420b2a0d31bb6cef4ee8e9",
    },
...
Run Code Online (Sandbox Code Playgroud)

我发现因为我暴露了这个id领域,_links并不是真的有必要,而且大多只是混乱我的反应.

Oli*_*ohm 12

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

当然,你可以愚弄你的客户不要使用那些信息,但这将导致更紧密的耦合(因为你不能再改变服务器端的URI,你的客户希望与专用服务器通信,而与超媒体你可以把它指向不同的服务器等).

与许多其他自称的REST框架相比,框架设计的一个关键方面是尊重REST中的基本原则并明确地利用它们.或者至少,不要制定激励措施来轻易打破它们.这在参考文档项目网站上清楚地表达出来.在本演示文稿中了解有关Spring Data REST的关键设计决策的更多信息,以及关于域驱动设计和REST的更多信息.