Spring boot,hateoas和@RestController

时间:2015-03-22 13:49:16

标签: spring rest hateoas

我一直在摆弄Spring Boot,构建一个无头的REST-full应用程序,尝试春天的hateoas ......

但事情就是这样 - 虽然我确实有一个基于java持久性API的域模型,但我的一般理解是,在构建rest控制器时,你不应该直接将实体作为Http资源响应。假设我有实体Task.class,它有各种可能与请求此资源的消费者无关或秘密的信息。

我已经看到一些杰克逊注释用于在序列化响应时忽略某些东西(假设一个人使用杰克逊)但是如果我希望我的域尽可能地解耦怎么办?

现在我知道我可以使用POJO实现这一目标,但也许已经有一些开箱即用的解决方案涉及或至少与spring兼容。

提前谢谢你,

1 个答案:

答案 0 :(得分:1)

避免使用Spring-HATEOAS的ResourceSupport包装器,它们实际上只适用于我认为最简单的PoC,并将您直接绑定到底层模型。

使用ResourceAssembler的东西将您的底层模型/实体/域层转换为特定的资源。我的大多数控制器方法都是这样的。

GET /thing/1
var thing = thingService.find(1)
if thing == null return 404
var resource = thingAssembler.toResource(thing)
return Ok(resource)

所以我的课程扩展了Spring-HATEOAS' ResourceSupport类。那些定义了我与客户的合同,我如何填充它们通常是汇编程序,但它可以改变。