我们正在使用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来发挥其全部潜力。
使用这种结构有一些好处,但这超出了这个问题的范围。
因此,我们只使用它提供的模板并运行本机查询,结果是Map
中Map
到Map
的……依此类推,取决于嵌套的方式结构是
现在,按照此结构,MongoDB集合中的一个文档(实体)包含多个人的数据(资源)。
因此,我们打破了所谓的Entity类(基本上是一个Map)来创建多个Resource类。这种转换是 1个地图实体将发出许多Resource对象。
现在按照spring-hateoas
的概念,一个Entity对象将转换为一个Resource对象(现在称为RepresentationModel
),而RepresentationModelAssemblerSupport
类将一个实体对象转换为模型对象使用toModel
函数。
问题:如何使一个Entity类以标准方式转换为多个RepresentationModel对象,以便以后也可以使用链接功能?