HAL和HATEOAS的关系和区别

Posted

技术标签:

【中文标题】HAL和HATEOAS的关系和区别【英文标题】:Relationship and difference between HAL and HATEOAS 【发布时间】:2014-11-07 07:02:21 【问题描述】:

HATEOAS(超媒体作为应用程序状态的引擎)和HAL(超文本应用程序语言)似乎相关但并不完全相同。 HATEOAS和HAL有什么关系和区别?

【问题讨论】:

【参考方案1】:

HATEOAS 是一个应用架构的概念。它定义了应用程序客户端与服务器交互的方式,通过导航它们在服务器返回的资源模型中找到的超媒体链接。

实现 HATEOAS,您需要一些标准的资源表示方式,其中将包含超媒体信息(相关资源的链接),例如,如下所示:


    "links": 
        "self":  "href": "http://api.com/items" ,
        "item": [
             "href": "http://api.com/items/1" ,
             "href": "http://api.com/items/2" 
        ]
    ,
    "data": [
             "itemName": "a" , 
             "itemName": "b"  
    ] 

HAL 就是这样的标准之一。它是一种特定的资源表示格式,可用于实现 HATEOAS。

如果您更喜欢遵循其他标准或使用自己的标准,您可以完全实现 HATEOAS,而无需遵循 HAL。

【讨论】:

除了 HAL,您还了解哪些标准? 有collection+json 和至少一个couple 的others 还有collection+JSON、JSON-LD,还有link headers的使用。

以上是关于HAL和HATEOAS的关系和区别的主要内容,如果未能解决你的问题,请参考以下文章

HATEOAS约束

HATEOAS约束

Spring Data Rest 和 Hateoas

Spring HATEOAS 与 Spring Data Rest

使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

链接是不是应该包含 HateOAS 中的身份验证令牌?