6

我正在构建一个 REST API。我有一个由无法扩展 ResourceSupport 的 bean 组成的域模型。使用 Spring-HATEOAS 将它们作为资源公开的最佳方法是什么?

如果这是不可能的,那么在 bean 生成的 JSON 上包含链接的最佳方式是什么?

4

2 回答 2

13

您可以使用Resource包装器:

MyModel model = ...
Resource<MyModel> resource = new Resource(model);
resource.add(linkTo(...
于 2013-12-12T15:42:00.117 回答
4

您应该将资源与您的域分开。

即使它们看起来很相似,域模型和资源也有很大的不同。

域对象是您的内部表示。根据您的业务逻辑/持久性的实现方式和其他设计决策,实现会受到限制。例如,它们可能是 JPA 实体,也可能是不可变的。

资源是对外部世界的表示。可能与域是一对一的或完全不同的。单个域实体具有多个资源表示的情况并不少见。

但首先,资源实现意味着在线发送/接收。所以它有被编组/解组的限制。

因此,您的应用程序应该具有用于​​域和资源的单独对象。使用 Spring HATEOAS,映射是使用资源组装器完成的。

您可以查看此示例应用程序:https ://github.com/opencredo/spring-hateoas-sample和相关文章:使用 Spring HATEOAS 实现 HAL 超媒体 REST API

于 2016-05-21T09:31:22.270 回答