在我目前正在进行的一个项目中,通过 REST API 支持 HAL 是通过扩展 Springs 获得的org.springframework.hateoas.ResourceSupport
,以便可以将链接添加到对象中。
一个简单的例子:
public class MyDataRepresentation extends ResourceSupport {
private String name;
}
现在在 web 层,我可以在表示中添加链接:
MyDataRepresentation myData = someService.getTheData();
myData.add(new Link(someUrl, someRel));
一切都很好。
问题是我宁愿直接重用域对象(MyData),而不是在 Web 表示层中创建一个单独的类来实现这一点。这样做的原因是,在这种特殊情况下,我的应用程序非常简单,可以直接使用域对象,并且我希望避免映射逻辑与 Web 层之间进行转换,无论是手动编码还是使用映射工具。反对映射逻辑的另一个论点是业务逻辑经常潜入映射逻辑,使业务逻辑更难遵循。
所以这里是域类:
public class MyData {
private String name;
}
不幸的是,这并没有给我任何地方可以附加我的 HAL 链接。
所以我的问题是,是否有适用于 Java 的 HAL 框架,它可以让我直接重用 Web 层中的域对象,而无需使用“扩展”并强制我沿着 Web/域映射逻辑的路线走下去?
在 Spring 中使用 HAL 支持的其他一些方法可以让我这样做吗?泽西岛的 HAL 支持怎么样,这不那么突兀吗?