据我所知,restful路由是基于REST架构的路由。并且rails默认使用restful路由。 resource
关键字为我们定义了七条宁静路线。如果我必须定义自定义路线,
resource :photos do
memeber do
get 'preview' #non-restful route
end
end
现在preview
路由被定义为非宁静路由。它不是RESTful路线吗?
我的问题是,我们如何区分RESTful路由和非RESTful路由?你能给出一个自定义的宁静路线和非宁静路线的例子。
答案 0 :(得分:2)
定义Restful Web服务没有严格的规则,尽管Rails为您提供了一个名为resources
的方法来生成Restful Web服务。但这取决于场景。
您可以查看there is no algorithm that runs better than that, in terms of asymptotic notation。它深入描述了请求如何属于Restful请求的类别。
答案 1 :(得分:0)
在许多应用程序中,您还会看到非RESTful路由,它明确地将URL的各个部分连接到特定操作。例如,
map.connect 'parts/:number', :controller => 'inventory', :action => 'show'
另一方面,当您在应用程序resources
中指定路由时使用resource
或route.rb
时,您将获得RESTful URL,例如:
map.resources :photos
将产生:
Verb URL controller action used for
GET /photos Photos index display a list of all photos
GET /photos/new Photos new return an HTML form for creating a new photo
POST /photos Photos create create a new photo
GET /photos/1 Photos show display a specific photo
GET /photos/1/edit Photos edit return an HTML form for editing a photo
PUT /photos/1 Photos update update a specific photo
DELETE /photos/1 Photos destroy delete a specific photo