HAL和HATEOAS之间的关系和区别

Lee*_*iam 61 rest compare hateoas

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

ast*_*sov 75

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" } 
    ] 
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 有[集合+ json](http://amundsen.com/media-types/collection/examples/)和[其他人] [http://www.markus-lanthaler.com/hydra/]的[其他人] ](https://github.com/kevinswiber/siren) (14认同)
  • 除了HAL,你还知道什么是标准? (3认同)
  • 还有 [collection+JSON](https://github.com/collection-json/spec)、[JSON-LD](https://www.w3.org/TR/json-ld/) 和使用 [链接标题](https://www.w3.org/wiki/LinkHeader)。 (3认同)