HATEOAS(REST-architecture)の実際の例[終了]


140

誰もが気付いているかもしれませんが、実際には多くの偽/基本的なREST-APIがあります(HTTP-APIを実装し、アプリケーションの状態としてのハイパーテキスト要件に従わずにRESTと呼びます)。最初にRESTパラダイムを指定した男、ロイT.フィールディング有名な怒りに)。

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

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


3
RESTは「簡単」だと多くの人が主張しているので、これは興味深いと思いますが、Fielding自身は、RESTは単純なアーキテクチャですが、それを使用してアプリケーションを設計するのは簡単ではないと述べています。
aehlke 2009

3
ちなみに、それはHATEOSではなくHATEOASである必要があり、後者はうまくグーグル化しません。
David Roussel、



ロイフィールディング自身がHATEOASを使用してアプリケーションを構築したことがありますか?
systemovich 2018

回答:


102

コードを実行するという意味での実装ではありませんが、InfoQ の記事「コーヒーを1杯手に入れる方法」は本当に気に入っています。スターバックスでコーヒーをRESTfulプロトコルとして注文するプロセスについて説明します。これは、典型的な「すべてがリソースである」REST紹介記事を超えて、HATEOASに焦点を当てています。強くお勧めします。


5
ジムウェバー、サヤスパラスタティディス、イアンロビンソンの著書「Rest in Practice」は非常に有用です
DomreiRoam

2
記事は問題ありませんが、残念ながら、その記事で説明するAPIはカスタムメディアタイプを使用しないため、HATEOASの原則に厳密には準拠していません。すべてがapplication / xmlである場合、クライアントは各リソースをどのように操作するか(たとえば、逆シリアル化、解析、表示)をどのようにして知るのでしょうか。人間が読むことを意図したドキュメントなど、この情報を渡す非標準的な方法に依存します。
ygormutti 2015年

21

いかが日クラウドAPI?はじめから:

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

裏話はまた、役に立つかもしれません。


2
HATEAOSの道を歩み始めたのはその裏話です。
Cyber​​Fonic

3
すべてのリンクは機能していません
Roeland Van Heddegem

「kenai.comサイトが閉鎖されて申し訳ありません。」
Nick Rolando

@NickRolando、リンクを交換しました。
リッチアポダカ

@RichApodaca、バックストーリーリンクは無効です。
Vasantha Ganesh K

7

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


1
そして今、ステータスコードは404です
NAXA

1
@サージェントのリンクは壊れますか、更新してください。
Govi S 2017

申し訳ありませんが、Netflixがそれを削除し、他の問題に対応したようです。
サージェントは

2
リンクのみの回答は、そのようなリンクが無効になっている場合、関連性が低くなる傾向があります。
nyedidikeke

@nyedidikekeそれはリンクですが、このコンテキストに対する答えです、あなたは投稿を編集してリンクを修正する必要があります!
Al-Mothafar

3

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

REST APIは、固定リソース名または階層(クライアントとサーバーの明らかな結合)を定義してはなりません。サーバーには、独自の名前空間を制御する自由が必要です。代わりに、サーバーがクライアントに適切なURIを構築する方法を指示できるようにします(HTMLフォームやURIテンプレートで行うなど)。メディアタイプとリンク関係内でこれらの指示を定義します。[ここでの障害は、RPCの機能的結合と同等のデータ指向のドメイン固有の標準など、帯域外情報のためにクライアントがリソース構造を想定していることを意味します]

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

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

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

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


2
あなたは正しい、それは非常に誤解を招くものです。ただし、ロイはメディアタイプのコンテンツ内ではなく、uriスペース内のリソース名について話しています。Sunは、クラスターへのアクセスに使用されるURIをいつでも自由に変更できます。明らかに、メディアタイプの新しいバージョンを作成しないと、表現内で「クラスター」という用語を「グループ」に変更することはできませんが、URIを何にでも変更できます。
Darrel Miller、

4
Sun APIはHTTPを統一インターフェースとして使用しているため、クライアントがWikiページを見て、GETがクラウドリソースの有効な動詞であることを知る必要はありません。GETが安全な動詞であることがわかっていることを考慮して、それを試すか、OPTIONSを使用して、それが使用可能かどうかを判別できます。
Darrel Miller、

3

これは少し前に尋ねられたことに気づきましたが、簡単な例のために「適切な」REST APIフローのデモを試してみました。RESTに関するRoyのルールに従ってみました-おそらくそれは役立つかもしれません: RESTを使用したAPIの例

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.