我有一个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到服务器的HTML页面包含用于测试API URL的表单时,url_for会引发一个“路由错误”异常,说“没有路由匹配......”。
答案 0 :(得分:1)
您可能想要包含':as => '并定义您可能用作链接路径的路线名称。
get 'api/some_get_action' => 'stuff#some_get_action', :as => 'some_get_action'
并且索引文件中的链接路径将具有“some_get_action_path”。不确定'匹配'或'获取'会自动解析为路径名,通过设置':as'它肯定会。
我喜欢您设置此页面进行测试的想法。我总是在控制台中进行操作,这肯定比单击链接更困难。您的链接可能需要推断它们是:json请求,而不是:http。