2016-11-11 10 views
0

私は最近、RESTfulである必要があるAPIを設計しており、HTTPヘッダとクエリ文字列パラメータを排他的に使用するシステムを定義してメタデータを定義し、応答の本体が実際のリソースデータのみ。RESTful APIでリンク拡張のリレーションタイプのURIを指す必要はありますか?

しかし、私は今、HATEOASのリンクを考えています.HTTPヘッダーやクエリ文字列のパラメータをすべて保持したいので、HTTP Linkヘッダーフィールドを使用することに決めました。

これは、rel属性についての質問を提起しました。私は直接回答を見つけることができません。

私の考えは、リソースのコレクションのために応答して送信されますLink秒の1のようなものになるということです、これはRFC6570で定義されているクライアントは、単純な文字列の拡張を使用することができるようになるLink: <https://api.domain.com/things/{id}>; rel="..."

メタデータを各リソースに埋め込む必要がなく、クライアントがURIテンプレートとリソースID以外を知る必要がなく、コレクション内のリソースごとに正しいリソースURIを作成できます。

しかし、relがここにあるべきか、それとも何を指すべきかはわかりません。

URIは関係 タイプのセマンティクスの定義を含む リソースを指し示すことができますが、クライアントが必要です。

RFC5988

、それは、拡張関係タイプはURIでなければならず、と言います がサーバーに負担をかけないように、そのリソースに自動的にアクセスしないでください。

私の質問は、RESTful APIではどのように定義されていますか?

私はちょうどrelのようなものをhttps://api.domain.com/media/thingのように作ることができます。

しかし、実際の定義内容はどのようなものでしょうか?

それは技術的には何かのように見えます。たとえば、簡単な説明のあるプレーンテキストのドキュメントです。

この種類のrel属性には、どのようなRESTful標準がありますか。

何か助けていただければ幸いです。

答えて

0

レベルRichardson's Maturity Modelを見ると、relは公開されたリンク/リレーションシップの名前を表しているようです。あなたのケースでは、curie:thing-by-id(たとえば、提案されたHAL draftで提案されているようにキュリーを使用している場合)に変換される可能性があります。考え方は、クライアントが実際のurlに耳を傾けずに、その名前(rel)でリンクを検索できるということです。

+0

したがって、HALドラフトでは、関連URIがリレーションに関する文書を持つHTMLページを指し、CURIEを使用してデータ転送サイズを削減し、クライアントに一貫したキーを提供するという素晴らしい提案があるようですたとえrel URI自体が変更されたとしても、その関係のhrefを検索するために検索する必要があります。 基本的にrelを使用してHTMLドキュメントをポイントし、CURIEを使用してrelをキーとして信頼性の高いhrefルックアップを作成します。 そうですか? 私が正しく理解していれば、私の質問にはうまく答えていると思いますが、私は確認を待つでしょう。 –

+0

うん、それはそれほど多くの私の理解、あまりにも –

+0

明確化のおかげで:) –

関連する問題