Ruby on Rails - 在REST API中区分复数与单数资源

ran*_*its 10 ruby rest ruby-on-rails

在开始编写任何代码之前,我正在为REST API构建URL.Rails REST魔术太棒了,但我对URL的格式有点困扰,例如:

http://myproject/projects/5

Project是我的资源,5是project_id.我认为如果用户希望检索他们的所有项目,那么相应的HTTP GET http://myproject/projects是有意义的.但是,如果他们希望检索单一资源(例如项目)的信息,那么使用http://myproject/project/5vs 是有意义的http://myproject/projects/5.最好是避免这种头痛,或者你们中的一些人有同样的担忧甚至更好 - 有一个有效的解决方案吗?

yfe*_*lum 17

Rails(3)在单数与复数方面有很多约定.例如,模型类总是单数(Person),而相应的表总是复数(people).(例如,Person.all映射到select * from people.)

对于路线,有一个单一资源的概念以及一个复数资源.因此,如果您这样做,resource :account您将获得类似于/account默认路径或/account/edit路径的路径来编辑帐户.(请注意,Rails使用/account一个PUT方法以实际更新帐户,/account/edit是编辑的帐户,这是从帐户本身单独的资源的一种形式.)如果你做了resources :people,但是,那么你会得到这样的路径/people,/people/1/people/1/edit.路径本身指示是否只能存在给定类型资源的一个实例,或者是否可以存在由某种类型的标识符区分的多个实例.