【发布时间】:2011-06-18 23:24:28
【问题描述】:
我正在尝试为 iphone 应用程序构建 Rails API。设计可以很好地通过 Web 界面登录,但我需要能够使用 REST API 创建和销毁会话,并且我想使用 JSON 而不是必须在会话控制器上执行 POST 并且必须解析 HTML 并处理重定向。
我想我可以这样做:
class Api::V1::SessionsController < Devise::SessionsController
def create
super
end
def destroy
super
end
end
我在 config/routes.rb 中添加了:
namespace :api do
namespace :v1 do
resources :sessions, :only => [:create, :destroy]
end
end
rake routes 显示路由设置正确:
api_v1_sessions POST /api/v1/sessions(.:format) {:action=>"create", :controller=>"api/v1/sessions"}
api_v1_session DELETE /api/v1/sessions/:id(.:format) {:action=>"destroy", :controller=>"api/v1/sessions"}
当我发布到 /user/sessions 时,一切正常。我得到了一些 HTML 和 302。
现在如果我发布到 /api/v1/sessions 我得到:
未知操作 AbstractController::ActionNotFound
curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/v1/sessions -d "{'user' : { 'login' : 'test', 'password' : 'foobar'}}"
【问题讨论】:
-
这也可以,而且更简单:stackoverflow.com/a/22582952/2555008
标签: ruby-on-rails ruby authentication devise