RESTfulなAPIで、ネストされたリソースについて、次のURL設計を考える:広告することを与えられたがマガジンIDを持つの後ろに合理的に何RESTfulなURLにネストされたリソースの親IDを持つの後ろに合理的
/magazines/:magazine_id/ads/:id POST
IDは雑誌の広告を一意に識別します?
さらに、ユーザーにそのURLまたは単に規約を提示すると、それはより美しいように見えます。より深い意味や制約はありますか?
RESTfulなAPIで、ネストされたリソースについて、次のURL設計を考える:広告することを与えられたがマガジンIDを持つの後ろに合理的に何RESTfulなURLにネストされたリソースの親IDを持つの後ろに合理的
/magazines/:magazine_id/ads/:id POST
IDは雑誌の広告を一意に識別します?
さらに、ユーザーにそのURLまたは単に規約を提示すると、それはより美しいように見えます。より深い意味や制約はありますか?
これは、誰が開発しているかによって大きく異なります。理論的には、必要はありません。
resources :articles do
resources :comments, only: [:index, :new, :create]
end
resources :comments, only: [:show, :edit, :update, :destroy]
またはあなたの場合:
resources :magazines do
resources :ads, only: [:index, :new, :create]
end
resources :ads, only: [:show, :edit, :update, :destroy]
は実際には、Railsのガイドは、彼らがIDを持っていないときにのみ、巣のリソースをできることを、2.7.2 Section (Shallow Nesting)にこれを示します
広告IDは雑誌の広告を一意に識別しますか?
これは最も一般的な規約ですが、普遍的なものではありません。あなたのモデルでto_param
を自由に上書きすることができ、データベースごとのユニバーサルキーの規約に違反します。あなたが雑誌でもこれをやったとします(たとえば、SEO目的)。この場合、ルートに雑誌のID /スラッグを含めて、かなり必要かもしれません。
これが行う "浅い" まさにです:
resources :magazines do
resources :ads, shallow: true
end
はhttp://edgeguides.rubyonrails.org/routing.html
でresources :magazines do
resources :ads, only: [:index, :new, :create]
end
resources :ads, only: [:show, :edit, :update, :destroy]
参照してください2.7.2浅いネスティングとまったく同じことを意味