我正在构建REST API。我有一个由bean组成的域模型,而不能扩展ResourceSupport。哪个是使用Spring-HATEOAS将它们作为资源公开的最佳方法?
如果不可能,这是在bean生成的JSON上包含链接的最佳方式吗?
答案 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