J'essaie de construire une API pour rails pour une application iphone. Devise fonctionne bien pour les connexions via l'interface web mais j'ai besoin de pouvoir créer et détruire des sessions en utilisant l'API REST et je veux utiliser JSON au lieu de devoir faire un POST sur le contrôleur de sessions et de devoir analyser le HTML et gérer une redirection.
Je pensais que je pourrais faire quelque chose comme ça :
class Api::V1::SessionsController < Devise::SessionsController
def create
super
end
def destroy
super
end
end
et dans config/routes.rb j'ai ajouté :
namespace :api do
namespace :v1 do
resources :sessions, :only => [:create, :destroy]
end
end
rake routes montre que les routes sont correctement configurées :
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"}
Lorsque je POSTE dans /user/sessions, tout fonctionne bien. Je reçois du HTML et un 302.
Maintenant si je POST à /api/v1/sessions j'obtiens :
Action inconnue 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'}}"