web-dev-qa-db-ja.com

HATEOAS(RESTアーキテクチャ)の実際の例

誰もが気づいているかもしれませんが、野生には多くの偽/初歩的なREST-APIがあります(HTTP-APIを実装し、hypertext-as-the-engine-に従わずにREST Roy T. Fieldingの有名な暴言 、最初にRESTパラダイムを指定した男性につながったof-application-state要件。

状態遷移のための関連するアプリケーション固有のメディアタイプ定義とともに、真のハイパーテキスト駆動型REST実装の実用的な例を見つけることができませんでした。

そのような実装の公にアクセス可能な例はありますか?

136
pmf

コードを実行するという意味では実装ではありませんが、InfoQの記事「 How to GET a cup of coffee 」が本当に気に入っています。これは、RESTfulプロトコルとしてスターバックスでコーヒーを注文するプロセスを説明しています。これは典型的な「すべてがリソースである」を超えたREST=紹介記事であり、HATEOASに焦点を当てています。強く推奨します。

101
trendels

Sun Cloud API についてはどうですか?序文から:

APIは、URIスペースに特定の構造がないことを前提としています。開始点は、クラウドサービスプロバイダーが提供するURIで、クラウド自体を識別します。クラウドの表現には、クラウド内の他のリソースのURIと、それらに対して実行される可能性のある操作(たとえば、仮想マシンの展開と起動)のURIが含まれます。

backstory も役立つ場合があります。

21
Rich Apodaca

Netflixには、リソースの一部としてリンクを含むHATEOASに基づく REST API があります。

7
Will Sargent

これは少し前に質問されたことに気付きましたが、簡単な例として「適切な」REST APIフローを実証するために突き刺しました。REST-おそらくそれが役立つかもしれません: RESTを使用したAPIの例

3
jeremyh

Royの4番目のポイントで実際に対処されているSun Cloud APIのRESTful性ではありません。

A REST APIは、固定リソース名または階層(クライアントとサーバーの明らかな結合)を定義してはなりません。サーバーは、独自の名前空間を制御する自由を持っている必要があります。 HTML形式やURIテンプレートで行われるような適切なURIを、メディアタイプおよびリンク関係内でそれらの命令を定義することにより構築する[ここでの失敗は、クライアントがドメインなどの帯域外情報によるリソース構造を想定していることを意味する-RPCの機能的結合に相当するデータ指向の標準である特定の標準]。

例1定義された階層内の固定リソース名:

Sun Cloud APIから:「... VDCの表現には、VDCに生息するクラスターの表現が含まれ、さらに各クラスター内のVMの表現が含まれます。」

例2ドメイン固有の標準などの帯域外情報:

クラウドリソースフィールド「uri」の「リソース通信メカニズム」がGETであることを知るには、wikiページのコンテンツ(帯域外情報)が必要です。

3
Hedgehog