通过HTTP使用JSON的HATEOAS

时间:2013-12-07 21:12:46

标签: json http rest hateoas

我有一个简单的类似CRUD的Web-API,使用JSON over HTTP(Person实体的存储库,一个联系人应用程序)。现在我想把它设计成适合RESTful架构的它。 除了一件事之外,这一切都很直接:

如果我没有HTML,我该如何实现HATEOAS约束?什么是好的,如果主要(目前唯一的)内容类型是JSON,只包含资源/网址背后的实际实体,那么建立HATEOS的方法?

我想到的一件事是link HTTP标头,但这真的是要走的路吗?

2 个答案:

答案 0 :(得分:3)

虽然普通的JSON不能为你提供链接关系,但是有其他媒体类型可以构建JSON(就像Atom的XML构建方式一样)。我个人最喜欢的是Hypertext Application Language (HAL)

我理解链接标题的方式,它们应该用于真正无法提供链接的媒体类型...图像和其他非文本资源之类的东西。虽然您可以对基于文本的资源使用链接头,但是您没有相同的灵活性来定位资源的各个部分;你几乎要坚持与整个资源的链接。

答案 1 :(得分:1)

不要使用特殊媒体类型使事情变得复杂。在我的硕士论文中,我利用链接头连接到其他相关资源。另外,我使用URL关系类型和URL http链接的组合在json中添加了超链接。 Json不是超媒体格式,但可以作为一种格式使用。见JSON mime: vnd.collection + JSON。

我能给出的最佳建议是尽可能多地使用链接头,直到社区决定如何在API中实现hateoas。使用已有的关系类型(显式)并定义自己的关系类型。