ここで SO に関する多くの議論を読み、Jon Moore のプレゼンテーション(多くのことを説明していました) を見て、HATEOAS に関する Roy Fielding のブログ投稿を読みましたが、クライアントの設計に関してはまだ少し理解できていません。
API の質問
今のところ、リソースを表すフォーム/アンカーと定義リストを含む xhtml を返すだけです。次のスニペットは、フォーム/アンカー/リストのレイアウト方法を詳しく説明しています。
# anchors
<li class='docs_url/#resourcename'>
<a rel='self' href='resource location'></a>
</li>
# forms
<form action='action_url' method='whatever_method' class='???'></form>
# lists
<dl class='docs_url/#resourcename'>
<dt>property</dt>
<dd>value</dd>
</dl>
私の質問は主にフォームに関するものです。Jon の講演では、(add_location_form) などのフォーム タイプと、それらに必要な入力について説明しています。私は多くのリソースを持っていませんが、抽象的なフォームタイプ (追加、削除、更新など) について考えていました。(追加、更新) の場合は、ターゲットリソースの有効な表現を送信する必要があることをドキュメントに書き留めておきます。そして、識別子を送信する必要があることを削除します。
質問 1: HATEOAS の概念では、(追加、削除、更新などを分類することによって) クライアントにフォームを「発見」させ、提供したすべてのデータを送り返すだけでよいのではないでしょうか? ここでの私の本当の質問 (議論を意図したものではありません) は、これが良い慣行に従っているかどうかです。
クライアントの質問
HATEOAS に続いて、リソースに対するアクションを検出可能にすると、クライアント コード (API のコンシューマー) とその UI にどのような影響がありますか。UI が利用可能なアクションのみを表示する必要があるというこれらの原則に従うのは素晴らしいことですが、それはどのように実装されているのでしょうか?
私の現在のアプローチは、応答を xml として解析し、xpath を使用して、クライアント開発時に既知のアクション (文書化されたフォーム クラス、つまり追加、削除、更新) を探し、利用可能な場合は UI コントロールを表示することです。
質問 2:発見の仕方が間違っていますか? それとも、クライアントに関する限り、これはあまりにも多くの魔法ですか (フォームクラスを知っています)? これは、クライアントが各リソースで利用可能なアクションを知っていることを前提としているのではないでしょうか (それはクライアントを作成する理由のようなものなので、これで問題ないかもしれません)。また、リソースへのアクション (フォーム クラス) のマッピングを文書化する必要があります。 、またはフォームクラスを文書化して、クライアント (およびクライアント開発者) がそれらを調査および発見できるようにするだけですか?
私はこれでどこにでもいることを知っていますが、どんな洞察も大歓迎です。これら 2 つの質問のいずれかによく答える回答を回答済みとしてマークします。ありがとう!