事前に: ハイパーメディアまたは Restfull の概念を誤解していたら申し訳ありません: 進行中の作業です...)
ハイパーメディアとヒドラ ( http://www.markus-lanthaler.com/hydra )を理解しようとしていますが、API を設計する前にクライアントに情報を返すことについていくつか質問があります。
www.myshop.com にウェブショップがあるとします。
ルートへの HTTP GET は、(たとえば) リンクとして表されるリソースのリストを返すことができます (json-ld ドキュメント内):
...
"@id": "/api",
"products" : "www.myshop.com/api/products",
"customers":"www.myshop.com/api/customers"
...
ヒドラに関する最初の質問です。ここにアクションを追加するにはどうすればよいですか? アプリケーションをロードする前に、クライアントが別のドキュメントをロードする必要があるようです。www.myshop.com/api から取得したドキュメントに潜在的なアクションが含まれていないことを意味します。
さらに進んで、productsは hydra:Link であると述べたので、クライアントは HTTP GET でそのリンクをたどって (対話して)、製品のリストを取得できます。それは次のようなリストになります:
....
{
"@id": "/api/products/123",
"@type": "vocab:Product"
},
{
"@id": "/api/products/124",
"@type": "vocab:Product"
},
....
ここで、クライアントは製品のリストを受け取ります (ページ化されたコレクションである可能性があります)。しかし、クライアントがそれをユーザーに表示したい場合は、 [製品 ID、価格、名前] (すべての製品のプロパティではない)を持つテーブルを考えてみましょう。
2番目の質問:クライアントが各製品のサーバーにリクエストを送信せずに、製品の詳細情報を取得するためのリンクを提供するにはどうすればよいですか?削除して、友人と共有するために 1 つ、バスケットに追加するために最後の 1 つ) ?
実際、ドキュメント自体にリンクが含まれていないため、ヒドラがどのように機能するのかを理解するのは困難ですか? Hal はこのアプローチを使用して、ドキュメント自体にリンクを作成していると思います (私が正しい場合)。
よろしく