我正在try 为iphone应用程序构建rails API.Desive可以很好地通过web界面进行登录,但我需要能够使用RESTAPI创建和销毁会话,并且我希望使用JSON,而不必在会话控制器上发布帖子,解析HTML并处理重定向.
我想我可以这样做:
class Api::V1::SessionsController < Devise::SessionsController
def create
super
end
def destroy
super
end
end
在配置/路由中.我补充说:
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,我会得到:
未知行为
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'}}"