我正在使用Rails应用程序,该应用程序使用RESTful路由来处理它的资源。我现在正在创建一个报告控制器,它将生成HTML,XML,CSV等报告。根据发送到控制器的参数,将有几种不同的报告可供生成。
对于此报告控制器使用REST是否过度,因为它不是将保存然后可用于编辑或删除的实际资源?使用RESTful会创建许多我永远不需要使用的路由。
定义自定义路线而不是RESTful会更好吗?比如在控制器中有一个generate
动作来生成报告并以指定的格式输出它?
map.connect 'reports', :controller => 'reports', :action => 'generate'
答案 0 :(得分:1)
你的方式很好,或者如果你喜欢坚持使用RESTful路线,你可以选择你想要的路线。
map.resources :reports, :only => [:show]
答案 1 :(得分:1)
抱歉复活这么老的帖子。
根据RESTful Web Services,您无需提供写入操作,因此可以将您的服务视为RESTful。
据我所知,您需要使用ROA(面向资源的架构)设计您的服务,就是这样。
话虽如此,@ jdl回答是正确的,RESTful。 :)
答案 2 :(得分:0)
我会以非RESTful方式进行。它不需要RESTful。甚至@jdl答案也不是RESTful,因为它只包含一个动作show
。在这种情况下,报告不是可以创建,编辑或删除的资源。我会添加这种路线:
map.report 'reports/:id', :controller => 'reports', :action => 'generate'
map.report_with_format 'reports/:id.:format', :controller => 'reports', :action => 'generate'
map.reports 'reports', :controller => 'reports', :action => 'index'
使用命名路由代替connect
将为您提供一些不错的网址助手,例如reports_path
等。