2011-07-17 7 views
4

RESTではリンクについてのすべてです。基本的に、APIユーザーは1つのリンク、トップレベルリンクのみを必要とします。これは通常http://server/api/などです。他のすべてのリンクは、階層をブラウズしている間に検出されます。例えば、/APIをGET/はあなたに/API /ユーザー//API /画像//API /ユーザーへのリンクを与えるかもしれない/あなた/API /ユーザーへのリンクを与えるかもしれません/ john/など。REST - コンテンツ内のリンクの書式設定方法

これらのリンクをどのようにフォーマットするのか何らかの標準があるかどうかは疑問です。結局のところ、リンクに関するすべての場合、クローラは、システムのすべてのリソースを最初から調べることができるはずです。

私はいくつかの研究を行った。 XMLメディアタイプであり、注目すべき標準を見つけることができませんでした。 /users/のリソースを選択しましょう。

<users> 
    <user name='john' xlink:href='/users/john'/> 
    <user name='steve' xlink:href='/users/steve'/> 
</users> 

などなど:いくつかは

<users> 
    <user name='john' uri='/users/john'/> 
    <user name='steve' uri='/users/steve'/> 
</users> 

その他

<users> 
    <user name='john' link='/users/john'/> 
    <user name='steve' link='/users/steve'/> 
</users> 

その他には、例えば与えXLINKを、使用書きます。

ここではわかりませんが、他のリソースへのリンクをどのようにフォーマットするかを指定する標準がないはずです。データがどのようにフォーマットされているかについての知識はありません。言い換えると、アプリケーションA1のAPIのクローラXは、アプリケーションA2のAPIに対してはおそらく機能しません。なぜなら、A1はA2とは異なるリソースへのリンクをフォーマットするからです。

上記では、私はXMLメディアタイプについてのみ話していました。 JSONを使用すると、さらに多くのバージョンが現場に広がっています。

リソースの関連リソースへのリンクをどのようにフォーマットする必要があるのか​​を指定しなかったのはなぜですか?

+0

申し訳ありませんが、私はAtomリンクを使用していますが、形式に関係なく、リンクが表す関係の種類について何かを含める必要があります。を入力します。リンクが何であるかを知らなければ、クライアントはそれをどうするかを理解することができなくなります。 –

+0

あなたは正しいです。私はこれを単純化のために残しました。しかし、それでも私は同じ質問が当てはまると信じています。rel = "/ rels/new"とは人間以外の人を意味しますか? –

+0

これはあなたのクライアント開発者が対処するものだと思います。アプリケーション全体で一貫したrel型を使用し、それらのrelsの意味を文書化し、クライアントはrelsを探してリンクをたどるだけでよい。これは、より長い会話(および他者からの入力)を保証する。新しい質問にしたいですか? –

答えて

5

application/xmlを返す際の問題は、リンクを指定するための標準的なセマンティクスが定義されていないことです。だから、それは非常に良いハイパーメディアのメディアタイプではありません。 Xhtmlは、リンクのいくつかのルールを指定する優れたものです。 HALは、さらに簡単なもう1つの優れたものです。

文書内にリンクを指定する際には、hrefだけでなく、多くの点を考慮する必要があります。 Mike Amundsen氏はhfactorでいくつかの素晴らしい仕事をしており、ドキュメントへのリンクを埋め込むさまざまな側面について話しています。

リンクの最も重要な部分は、John Howesがrelを述べたようなものです。 relは、IANAとしてhereと定義されたもののように、グローバルに定義されたものでもよい。または、RFC 5988で定義されている拡張リンク関係のルールに従っている限り、独自のカスタムルールにすることができます。 relドキュメントは、クライアント開発者に、そのリンクのアクティブ化について知っておく必要があることをすべて伝えます。

+0

明確化のためにありがとう、それは今より多くの意味があります。私はあなたの参照を確認します。 –

2

リソースの関連リソースへのリンクをフォーマットする方法を指定しなかったのはなぜですか?

ダレルは、上記の良いテイクを持っていますが、直接あなたの質問に答えるために:RESTスタイルで、それは、それはメディアタイプを利用するプロトコルを使用するアーキテクチャで実現されています。リンクがどのようにフォーマットされるべきかを指定するメディアタイプとされている。したがって、REST自体は書式設定を指定しません。これは、標準タイプがリンク書式を指定するデータ要素の対話の配置を制約する方法を指定します。

+0

ありがとうございます。あなたは多かれ少なかれ質問に答えましたが、 'REST仕様はありません。 「なぜREST仕様ではないのですか」の代わりに「リンク書式設定」を含める必要があります。リンクの書式設定が含まれていますか? '、それは私にRESTの範囲と全体像を理解させました。 –

関連する問題