「ユーザー」リソースと「グループ」リソースがあるとします。それらのRESTful表現は次のようになります。
/user/:id
/group/:id
しかし、2つのリソース間の関連付けに対して操作を実行したい場合はどうなりますか?たとえば、ユーザー#1がグループ#1に参加したいことを指定したい場合。グループ#1のgroup#joinをユーザー#1で実行する必要があることをどのように表現しますか?
「ユーザー」リソースと「グループ」リソースがあるとします。それらのRESTful表現は次のようになります。
/user/:id
/group/:id
しかし、2つのリソース間の関連付けに対して操作を実行したい場合はどうなりますか?たとえば、ユーザー#1がグループ#1に参加したいことを指定したい場合。グループ#1のgroup#joinをユーザー#1で実行する必要があることをどのように表現しますか?
たとえば、ユーザー#1がグループ#1に参加したいことを指定したい場合。グループ#1のgroup#joinをユーザー#1で実行する必要があることをどのように表現しますか?
私はおそらく/groups/ 1/membersや/users/ 1/membershipsのようなものにPOSTを行います。ユーザーが一度に複数のグループに参加できるようにする場合は、/ users / 1/membershipsにPUTなどの代替手段を提供するのが理にかなっている場合があります。
いくつかのオプションがありますが、それはあなたが達成したいワークフローに帰着します。しばらくRESTを忘れておくといいと思います。シンプルなブラウザアプリの構築を考えてみてください。リンクとフォームはどこにありますか?Webアプリの各ページは、リソースのHTML表現です。リンクとフォームがあります。それを別の表現に置き換えますが、リンクとフォームは保持します。
このような設計演習を終えると、/ groups / 1/membersへのPOSTが理にかなっているかどうかを判断するのに適した立場になります。
ジョン
さて.. /group/:id には何が含まれていますか?
どこかにユーザーのコレクションが含まれると思いますか?
/group/:id/users/:id - グループへの私のメンバーシップを表します。
マイク・ブラウン