Spring HATEOAS-单个实体的多个资源

时间:2020-02-14 08:45:34

标签: spring-hateoas hateoas

我们正在使用Spring Boot for REST API和Angular 8作为Web客户端来设计和开发企业应用程序。自我们开始已经一年了。

当我开始时,我阅读了多篇文章,这使我更加理解为什么没有HATEOAS的REST实际上不是REST。我继续进行了当时可用的Spring HATEOAS项目,该项目的版本为v0.25(不稳定),但是足够好让我们开始。

现在,它已移至稳定的1.x版本,我们已升级至该版本。

在数据库方面,我们广泛使用MongoDB来存储超过1 TB的数据,并且我们的文档结构有些奇怪。它包含动态密钥而不是静态密钥。例如,本来可以这样存储

{
  name: "Sean",
  manager: "Rick",
  skills: ["java", "javascript"]
}

基本上存储为:

{
  "Rick": {
             "Sean": ["java", "javascript"],
             ...  //more people here
          }
}

不要怪我的结构。这是由建筑师在5年前决定的,当时出于某些适当的原因。重新构造整个结构的成本巨大,客户不愿意这样做。

但这很好!使用这种结构只是我们的一个主要缺点,即由于到处都有动态密钥,我们无法像Spring Data MongoDB一样使用ODM来发挥其全部潜力。

使用这种结构有一些好处,但这超出了这个问题的范围。

因此,我们只使用它提供的模板并运行本机查询,结果是MapMapMap的……依此类推,取决于嵌套的方式结构是

现在,按照此结构,MongoDB集合中的一个文档(实体)包含多个人的数据(资源)。

因此,我们打破了所谓的Entity类(基本上是一个Map)来创建多个Resource类。这种转换是 1个地图实体将发出许多Resource对象

现在按照spring-hateoas的概念,一个Entity对象将转换为一个Resource对象(现在称为RepresentationModel),而RepresentationModelAssemblerSupport类将一个实体对象转换为模型对象使用toModel函数。

问题:如何使一个Entity类以标准方式转换为多个RepresentationModel对象,以便以后也可以使用链接功能?

0 个答案:

没有答案