2017-03-09 10 views
0

私はHATEOASから始めています。私は簡単な質問があります。そのIDで特定のリソースをロードする場合、これを行うにはどうすればよいでしょうか?HATEOAS - ページを更新するときにリソースを読み込みます。

{ "rel": "order", "href": "http://api.com/orders/:id" } 

テンプレート文字列を使用すると良い方法がある:現在、私は/ルートルートへの要求は、このルートが私にこのような一つのリンクを与えるのですか?

その他の質問は:私は10種類のリソースタイプがある場合、これをルートレスポンスに10回入れる必要がありますか?

答えて

1

反論 - どこからIDを取得しましたか?

リンクをたどってAPIをクロールすることを想定していますが、IDだけでなくサーバーから返されたリンク全体を保存するのはなぜですか?

これは実際にHATEOASという考えです。あなたのAPIは探索可能であり、リソースから抽出したIDから自分自身を組み立てるのではなく、APIによって返されるリンクを使用するだけです。

利点は、APIが変更されたとき(パス名が変更されるなど)、クライアントコードを変更する必要がないことです。

しかし、長い時間リンクを維持する必要がある場合(たとえば、何らかの形でブックマークを付けたい場合など)、それはおそらく良い戦略ではありません。

次に、推奨するリンクテンプレートを使用して、ルートリソース(またはルートリソースから簡単にアクセスできる適切なサブリソース)からリンクのテンプレートを取得することをお勧めします。

このように、あなたは常に有効なリンクを持っていることがわかります。はい、そこにすべてを置く必要があります(少なくともディープリンクの場合はサポートしています)。

テンプレートのリンクを表現するためには、HALを使用することができます。stateless.co/hal_specification.html

+0

の1- idは私のクライアント側のルートからcames。 2 - 私はルートを保存する目的を理解していません。 :/ –

+1

さて、HATEOASの考え方は、あなたのAPIは探検可能であり、あなた自身が組み立てるのではなく、APIによって返されるリンクを使用することです。 しかし、自分でアセンブルする場合は、ルートリソース(またはルートリソースから簡単にアクセスできる適切なサブリソース)のすべてのリソースタイプへのリンクを提供する必要があります。 テンプレートリンクを表現するには、HALを使用できます。http://stateless.co/hal_specification.html – Bernhard

+0

ありがとうございました。 –

関連する問題