バージョン管理されたリソースの URL に関する適切な概念を理解するのに非常に苦労しています。
RCS などの古い学校のような、バージョン管理システムと非常によく似た方法でレシピを追跡するアプリケーションがあるとします。各バージョンは、しばらくの間作業コピーとして使用でき、その後、そこから新しいバージョンが作成されます。各バージョンにはコメントが関連付けられており、コメントは共有されません。いつでも履歴をさかのぼって、進化したレシピを見ることができますが、各インスタンスは常に同じレシピのバージョンと見なされます。これらを参照する URL を作成する最も適切な方法を見つけようとしていますが、サブリソースと一時リソースなどの違いのいくつかを理解するのに苦労しています。
これが行われるのを私が見た2つの主な方法は次のとおりです。
> 1) query parameters
> -- /recipes/ultimate-thing -> List of available versions of Ultimate Thing
> -- /recipes/ultimate-thing?version=2 -> Version 2 of Ultimate Thing
> -- /recipes/ultimate-thing?version=latest -> Current working version of Ultimate Thing
2a) Nested resources with versions considered subresources
-- /recipes/ultimate-thing/versions/ -> List of available versions of Ultimate Thing
-- /recipes/ultimate-thing/versions/2 -> Version 2 of Ultimate Thing
-- /recipes/ultimate-thing -> Current working version of Ultimate Thing
2b) Nested resources with the list at the resource
-- /recipes/ultimate-thing -> List of available versions of Ultimate Thing
-- /recipes/ultimate-thing/versions/2 -> Version 2 of Ultimate Thing
-- /recipes/ultimate-thing/versions/latest -> Current working version of Ultimate Thing
ある方法を自分に納得させようとするたびに、その方法の適切な正当化を構築するための理解が不足しているように感じます.
1 は多くの Rails 関係者に好まれているようですが、特定のリソース ( /recipes/ultimate-thing )に POST して以来、新しいバージョンのレシピをいつ作成したいかを明確にする方法がわかりません。通常、リソースが存在しない場合はその名前でリソースを作成する必要があります。作成する代わりに 404 のようなものを返し、/recipes に投稿して新しいレシピを作成し、POST を/recipes/ultimateに許可するのが適切でしょうか? -新しいバージョンを作成すること? また、コメントはどのように表されますか? バージョンがなければ/recipes/ultimate-thing/comments のようなことができますが、/recipes/ultimate-thing/comments?version=latest醜いように見えますが、2b はより明確な「究極のレシピの最新バージョンのコメント」のように見えますが、2a は最もきれいに見えます。
実際、私は一般的に 2a が一番好きですが、バージョンがレシピのサブリソースであることを理解するのに苦労しています。バージョンはレシピですが、そのレシピのすべてのバージョンは論理的にグループ化する必要があるためです。
また、stackoverflow で 2b も見ましたが、 /recipes/ultimate-thing/version/latest/comments のようなものが常に必要になるため、冗長すぎるようです。バージョンを、注釈を付けることができる指示を含む材料のコレクションと考えると、これは最も理にかなっていますが、レシピは同様の意図を共有するバージョンのコレクションです。
私は2aが本当に好きですが、私が見逃しているアプローチでそれを悪い考えにするものはありますか? 1 がどのように機能するかについて、多くの人に好まれているように見えることをより理にかなっていますか?
それとも、 /recipes/ultimate-thing/latestや/recipes/ultimate-thing/2/comments のようなことを常に行う方が理にかなっていますか?
これがこれに非常に適したフォーラムであるかどうかはわかりませんが、あるアプローチが別のアプローチよりも優れている理由を理解するために、それについて議論したいと思います.