既存のRestfulWebサービスを可能な限りHATEOSに変換した場合の潜在的なメリットについて多くのことを読んでいます。次の有効な利用可能なアクションを記憶する際の消費者の負担を軽減するために、ペイロードにリンクを提供することの重要性を理解しています。ただし、実際にRestfulWebサービスの利用者にどのように役立つかについて頭を悩ませているようには思えません。
説明のために、コーヒーの注文についてのRestInPracticeの本からこの例を取り上げます。-
<order xmlns="http://schemas.restbucks.com">
<location>takeAway</location>
<item>
<name>latte</name>
<quantity>1</quantity>
<milk>whole</milk>
<size>small</size>
</item>
<cost>2.0</cost>
<status>payment-expected</status>
<link rel="payment" href="https://restbucks.com/payment/1234" />
</order>
基本的に、これにより、消費者は<link>
タグで定義された支払いを行うことができます。ただし、実際には、コンシューマーは、そのWebサービス呼び出しのすべてのセマンティクス、たとえば、使用するメソッド(POSTまたはPUT)、支払いを行うためにペイロードで使用する要求パラメーターなどを知る必要があります。 ..言い換えると、コンシューマーは、このWebサービスを正常に呼び出す方法を知るためにWADLドキュメントに依存する必要があります。これらのタグは、すべてが1つの特定のアイテムに対してGETを使用している場合、おそらくより意味があります。そうでなければ、ここでリンクを定義することにあまりメリットはありません...消費者が次に呼び出すことができるアクションを知っているという事実を除けば、WADLを参照して正しく呼び出す方法を決定します。
<link>
私の次の懸念は、すべてのタグで非常に重いペイロードになってしまう可能性です。たとえば、/ projects / 1 / usersのGETが、プロジェクト1に属するすべてのユーザー情報を返す場合、次のタグが付けられると思います。-
<project>
<users>
<user id="12" name="mike" ... />
<user id="23" name="kurt" ... />
<user id="65" name="corey" ... />
</user>
<links>
<link rel="self" href="http://server/projects/1/users"/>
<link rel="create_user" href="http://server/projects/1/users"/>
<link rel="get_user_mike" href="http://server/projects/1/users/12"/>
<link rel="get_user_kurt" href="http://server/projects/1/users/23"/>
<link rel="get_user_corey" href="http://server/projects/1/users/65"/>
...
</links>
</project>
プロジェクトにたとえば500ユーザーが含まれている場合、ペイロードに500ユーザーリンクが含まれていませんか?それ以外の場合、この状況を処理するためにWebサービスを再設計するための最良のアプローチは何ですか?それとも、これは現実の世界で受け入れられますか?
どんな考えや提案もここで大歓迎です。ありがとうございました。