Devise を JSON API 化する
DeviseをAPI経由で叩きたい。
そのためにはフォームじゃなくて全部Ajaxで通信するので、各アクションで何のパラメータが必要かをまずまとめた。
AngularJSを使い出すと、そうせざるを得ないので、ちょっとレールから外れるかな。
Prefix Verb URI Pattern Controller#Action new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create <%= f.email_field :email, :autofocus => true %> <%= f.password_field :password %> <%= f.check_box :remember_me %> destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy user_password POST /users/password(.:format) devise/passwords#create <%= f.email_field :email, :autofocus => true %> PUT /users/password(.:format) devise/passwords#update <%= f.hidden_field :reset_password_token %> #-> url parameter でくっついてくる <%= f.password_field :password, :autofocus => true %> <%= f.password_field :password_confirmation %> user_registration POST /users(.:format) devise/registrations#create <%= f.email_field :email, :autofocus => true %> <%= f.password_field :password %> <%= f.password_field :password_confirmation %> PUT /users(.:format) devise/registrations#update <%= f.email_field :email, :autofocus => true %> <%= f.password_field :password, :autocomplete => "off" %> <%= f.password_field :password_confirmation %> <%= f.password_field :current_password %> DELETE /users(.:format) devise/registrations#destroy none user_confirmation POST /users/confirmation(.:format) devise/confirmations#create <%= f.email_field :email, :autofocus => true %> user_unlock POST /users/unlock(.:format) devise/unlocks#create <%= f.email_field :email, :autofocus => true %
これを元にパラメータを作って送るのはそれで結構なのだが、サーバ側ではJSONで返すためのつくりが必要のようだ。DeviseはデフォルトではHTMLを返して使い物にならないので、独自に実装する。
セッションを作る系は参考になりそうなものがあったが、その他はDeviseのソースコードを読んでやりくりしていくしかなさそうだ。。
むしろこれだったらDevise使う意味が殆ど感じられないので、 warden のみで実装できないか模索中。
何か他にいい方法があれば教えてください。