Devise_token_auth導入時にURLを変更する方法
導入そのものについては参考になる他記事がたくさんあるので省略。
他記事でよく見かけたroutes
Rails.application.routes.draw do
namespace :api do
namespace :v1, defaults: {format: :json } do
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
registrations: 'api/v1/registrations',
sessions: 'devise_token_auth/sessions'
}
end
end
end
この記述で「[post]/api/v1/auth」ならユーザー作成、「[post]/api/v1/auth/sign_in」でログインになる。
使えることは使えるんだが、authがユーザー作成、sign_inでログインは直感的じゃないので、ユーザー作成なら「[post]/api/v1/user」、ログインは「[post]/api/v1/login」みたいにしたい。
あと、v1もバージョン管理するほどじゃないので省略したい。
結論
Rails.application.routes.draw do
scope :api, defaults: { format: :json } do
mount_devise_token_auth_for 'User', at: 'users', skip: [:sessions,], controllers: {
registrations: 'api/users'
}
devise_scope :user do
post 'login', to: 'devise_token_auth/sessions#create'
delete 'logout', to: 'devise_token_auth/sessions#destroy'
end
end
end
こうすることで、ユーザー作成なら「[post]/api/user」、ログインなら「[post]/api/login」にできた。
namespaceがほぼ一択で他記事にのっていたから、意味のあるものだと気づけなかった。