Spring Data Rest:从超媒体 Rest JPA 实体的响应中删除 _links 属性

DHR*_*SAL 8 spring spring-data-rest spring-hateoas

我想自定义超媒体 Rest JPA 实体的响应,并想删除所有 _links 属性和自链接属性。我的客户端应用程序并不大,它知道要调用的确切 REST API。所以我觉得这些在 HTTP 数据包中传输的额外字节在我的应用程序中总是一个开销。

那么如何才能从响应中删除此链接属性呢?

现在 REST API 响应是:

{
  "_embedded" : {
    "questionsTypes" : [ {
      "queTypeID" : 2,
      "queDescription" : "Single choice rating selection",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/question_web/rest/QuestionsType/2"
        },
        "questionsType" : {
          "href" : "http://localhost:8080/question_web/rest/QuestionsType/2{?projection}",
          "templated" : true
        }
      }
    },{
      "queTypeID" : 5,
      "queDescription" : "Subjective questions",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/question_web/rest/QuestionsType/5"
        },
        "questionsType" : {
          "href" : "http://localhost:8080/question_web/rest/QuestionsType/5{?projection}",
          "templated" : true
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/question_web/rest/QuestionsType"
    },
    "profile" : {
      "href" : "http://localhost:8080/question_web/rest/profile/QuestionsType"
    },
    "search" : {
      "href" : "http://localhost:8080/question_web/rest/QuestionsType/search"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我期望的最终回应是这样的:

{
  "_embedded" : {
    "questionsTypes" : [ {
      "queTypeID" : 2,
      "queDescription" : "Single choice rating selection",
    },{
      "queTypeID" : 5,
      "queDescription" : "Subjective questions",
    } ]
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 3

@Component
public class MyEntityProcessor implements RepresentationModelProcessor<EntityModel<MyEntity>> {

    @Override
    public EntityModel<MyEntity> process(EntityModel<MyEntity> model) {
        return EntityModel.of(model.getContent());
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到 StackOverflow。虽然此代码可以回答问题,但提供有关“如何”和/或“为什么”解决问题的附加上下文将提高​​答案的长期价值。 (3认同)