Spring 数据 REST 查询中返回类型的控件名称

Control name of returned types in Spring Data REST Query

是否可以控制在 Spring Data REST 中返回搜索结果时使用的 class 名称?

我有一个 class Account 作为 JSON 模式发布并且不包含 id 字段,因为它在 RESTful API。为了使用 Spring 数据 MongoDB 坚持这一点,我用 PersistableAccount 扩展了 Account,它有一个 id 字段。

当向客户端返回搜索结果时,名称 persistableAccounts 被暴露,这是一个不应泄漏到 API:

中的实现细节
{
  "_embedded" : {
    "persistableAccounts" : [ {
      "lastName" : "McLastName",
      "firstName" : "Kevin",
      "phoneNumber " : "+44 7700000000",
      "email" : "kevin@example.com",
      "_links" : {
        "self" : {
          "href" : "http://localhost:64712/accounts/id"
        },
        "persistableAccount" : {
          "href" : "http://localhost:64712/accounts/id"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:64712/accounts/search/findByFirstName?firstName=Kevin"
    }
  }
}

是否可以控制使用的术语?

Spring 如果您的结果可能包含多个子类型,Data Rest 总是在响应中包含一个 collectionRel

默认情况下它是 class 名称,但是,您可以在存储库的 @RepositoryRestResource 注释中自定义它。

例如:

@RepositoryRestResource(collectionResourceRel = "whateverIwantHere")
public interface CustomerRepository extends CrudRepository<Customer, Long> {

}