【发布时间】:2012-06-23 17:34:55
【问题描述】:
我有一个 Rails 应用程序,它可以通过 HTML 界面完成我需要它做的所有事情,现在我想使用一个 API 来提供对部分功能的访问。
如何使用 Routes.rb 将某些 API 控制器操作选择性地转发到另一个控制器的操作?
我尝试了以下方法:
我的常规控制器路由可以正常使用:
match 'stuff' => 'stuff#index'
get 'stuff/index'
get 'stuff/some_get_action'
post 'stuff/some_post_action'
但是当我尝试使用我的 API 时:
match 'api' => 'api#index'
match 'api/some_get_action' => 'stuff#some_get_action', :via => :get
match 'api/some_post_action' => 'stuff#some_post_action', :via => :post
或者...
match 'api' => 'api#index'
get 'api/some_get_action', :to => 'stuff#some_get_action'
post 'api/some_post_action', :to => 'stuff#some_post_action'
我得到一个错误。当我导航到 /api/index 以服务器包含用于测试 API URL 的表单的 HTML 页面时,url_for 会引发“路由错误”异常,提示“没有路由匹配...”。
【问题讨论】:
-
如果你想在你的应用程序上使用 API,你应该坚持最佳实践:引入 app/v1 等版本控制并为其创建不同的控制器。如果你坚持使用胖模型瘦控制器方法,这应该很容易做到。
标签: ruby-on-rails routes