Spring-HATEOAS没有扩展ResourceSupport

时间:2013-12-03 10:15:48

标签: spring rest spring-mvc hateoas spring-hateoas

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

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

2 个答案:

答案 0 :(得分:11)

您可以使用Resource包装器:

MyModel model = ...
Resource<MyModel> resource = new Resource(model);
resource.add(linkTo(...

答案 1 :(得分:3)

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

即使它们看似相似,但领域模型和资源却截然不同。

域对象是您的内部表示。实现具有约束,具体取决于业务逻辑/持久性的实现方式以及其他设计决策。例如,它们可能是JPA实体,也可能是不可变的。

资源是外部世界的代表。 可能与域一对一或完全不同。对于单个域实体而言,具有多个资源表示并非如此罕见。

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

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

您可以查看此示例应用程序:https://github.com/opencredo/spring-hateoas-sample以及相关帖子:Implementing HAL hypermedia REST API using Spring HATEOAS