Я пытаюсь создать API-интерфейс для приложения iphone. Devise прекрасно работает для входа в систему через веб-интерфейс, но мне нужно иметь возможность создавать и уничтожать сеансы с помощью REST API, и я хочу использовать JSON вместо необходимости выполнять POST на контроллере сессий и разбирать HTML и иметь дело с перенаправление.
Я думал, что смогу сделать что-то вроде этого:
class Api::V1::SessionsController < Devise::SessionsController
def create
super
end
def destroy
super
end
end
и в config / rout.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"}
Когда я помещаю POST в / user / session, все работает нормально. Я получаю немного HTML и 302.
Теперь, если я помещаю POST в / api / v1 / session, я получаю:
Неизвестное действие
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'}}"