リソースを追加するときに、特定の POST フィールドに特定の値しか持てない REST API を実装しています。たとえば、usertype フィールドを持つユーザー リソースがあります。この usertype フィールドには、管理者とユーザーの 2 つの値しかありません。
開発者がこれらの許可された値を RESTful な方法で発見できるようにするにはどうすればよいでしょうか?
ありがとう!
メディアタイプで列挙の概念を定義する必要があります。次に、ハイパーメディア コントロールで許容値を列挙して、どこに何を投稿するかを伝えます。たとえば、GETting/users
は次を返す場合があります。
<users href="/users">
... collection information and other controls you want to include ...
<create href="/users" method="post">
... fields ...
<usertype type="enum" cardinality="required">
<administrator/>
<user/>
</usertype>
</create>
</users>
create
要素はフォームであり、要素usertype
はフォーム フィールドであり、administrator
およびuser
は列挙の有効な値です。この例に基づいて、コレクション、フォーム、フォーム フィールド、および列挙の構造がメディア タイプで必要になります。
これは実際、私が REST について気に入っている点の 1 つです。この情報は帯域内で伝達されるため、(適切に記述された) クライアントを壊すことなく簡単に変更できます。たとえばeditor
、列挙に追加したいと言うだけで、それを追加できます。古いクライアントはそれを無視することができ、新しいクライアントはそれを利用できます。さらに優れているのは、リクエスターの承認に基づいて有効な値を変更できることです。administrator
たとえば、リクエスタが管理者の場合、との両方user
が有効な値として与えられます。リクエスタが の場合、それらは有効なオプションとしてuser
のみ提供されます。user
うるさい!
簡単な解決策は、許可された値を返す読み取り専用リソース /usertypes です。