web-dev-qa-db-ja.com

HALとHATEOASの関係と違い

[〜#〜] hateoas [〜#〜] (アプリケーション状態のエンジンとしてのハイパーメディア)および [〜#〜] hal [〜#〜] (ハイパーテキストアプリケーション言語)関連しているようですが、まったく同じではありません。 HATEOASとHALの関係と違いは何ですか?

58
Lee Chee Kiam

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はそのような標準の1つです。これは、HATEOASの実装に使用できるリソース表示の特定の形式です。

別の標準に従うか、独自の標準を使用する場合は、HALをまったく使用せずにHATEOASを完全に実装できます。

71
astreltsov