リソース ID を他の手段 (認証が必要なページの current_user など) で識別できる状況では、URL から ID を省略するのは良い考えですか? (例:/students/1/homework
へ/students/homework
)。
また、これは URL の安らぎに影響を与えますか? HTTP動詞の場合はそうなるのではないかと思いますが、カスタムアクションの場合はよくわかりません.
リソース ID を他の手段 (認証が必要なページの current_user など) で識別できる状況では、URL から ID を省略するのは良い考えですか? (例:/students/1/homework
へ/students/homework
)。
また、これは URL の安らぎに影響を与えますか? HTTP動詞の場合はそうなるのではないかと思いますが、カスタムアクションの場合はよくわかりません.
それはあなたのアプリケーションと、クライアントが見るのに役立つものにかかっていると思います. 接続しているユーザーが、すべての学生の宿題を見ることができる管理者である場合、/students/1/homework
パスは理にかなっていますが、このリソースを使用するのが学生だけである場合は、パス/students/homework
はより理にかなっています。基本的に、後者はすべての学生向けリソース
と考えることができます。クライアント ライターを混乱させず、権限を明確に保つ (誰が何を表示/実行できるか) ために、
これらのリソースを分割すると非常に便利であることがわかりました。namespace
namespaces
URL は常に 1 つの特定のリソースを指す必要があります。それらは絶対的または相対的のいずれかです。ファイルシステムと考えてください。場合によっては (セキュリティ/スケーラビリティ)、リストを許可できないことがあります。
/students/me
, /students/latest
,/students/latest/homework/lastest
/students/3
、/students/3/homework
、/teachers/3/homework/3
あなたの例では、2 つの URI が異なるリソースを識別します。
どちらを選択するかは、人々がどのリソースを参照したいと思うか (たとえば、電子メールやブックマークなど) によって大きく異なります。
2 番目のソリューションが非 RESTful であるとは思いませんが、多くの追加機能と互換性があるため、最初のソリューションを好むでしょう (たとえば、教師は生徒の宿題の表現にアクセスできます)。