jul*_*lez 0 ruby-on-rails devise
我正在创建一个rails api,我希望资源处于/api/v1/路由状态,包括注册和身份验证。
我创建了以下路线,为我提供了 Devise 所需的路线:
config/routes.rb
namespace :api, defaults: { format: :json } do
namespace :v1 do
devise_for :users, as: 'api'
end
end
Run Code Online (Sandbox Code Playgroud)
它提供:
Prefix Verb URI Pattern Controller#Action
new_api_user_session GET /api/v1/users/sign_in(.:format) api/v1/sessions#new {:format=>:json}
api_user_session POST /api/v1/users/sign_in(.:format) api/v1/sessions#create {:format=>:json}
destroy_api_user_session DELETE /api/v1/users/sign_out(.:format) api/v1/sessions#destroy {:format=>:json}
cancel_api_user_registration GET /api/v1/users/cancel(.:format) api/v1/registrations#cancel {:format=>:json}
new_api_user_registration GET /api/v1/users/sign_up(.:format) api/v1/registrations#new {:format=>:json}
edit_api_user_registration GET /api/v1/users/edit(.:format) api/v1/registrations#edit {:format=>:json}
api_user_registration PATCH /api/v1/users(.:format) api/v1/registrations#update {:format=>:json}
PUT /api/v1/users(.:format) api/v1/registrations#update {:format=>:json}
DELETE /api/v1/users(.:format) api/v1/registrations#destroy {:format=>:json}
POST /api/v1/users(.:format) api/v1/registrations#create {:format=>:json}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试注册用户时,出现以下错误
ActionController::RoutingError:
uninitialized constant Api::V1::RegistrationsController
Run Code Online (Sandbox Code Playgroud)
为了将资源保留在/api/v1/路径下并且仍然能够使用设备的默认控制器,需要修复路由。
与其使用namespace,不如使用scope。
scope :api, defaults: { format: :json } do
scope :v1 do
devise_for :users
end
end
Run Code Online (Sandbox Code Playgroud)
这样您甚至不必使用as: 'api'来识别您的资源
Prefix Verb URI Pattern Controller#Action
new_user_session GET /api/v1/users/sign_in(.:format) devise/sessions#new {:format=>:json}
user_session POST /api/v1/users/sign_in(.:format) devise/sessions#create {:format=>:json}
destroy_user_session DELETE /api/v1/users/sign_out(.:format) devise/sessions#destroy {:format=>:json}
cancel_user_registration GET /api/v1/users/cancel(.:format) devise/registrations#cancel {:format=>:json}
new_user_registration GET /api/v1/users/sign_up(.:format) devise/registrations#new {:format=>:json}
edit_user_registration GET /api/v1/users/edit(.:format) devise/registrations#edit {:format=>:json}
user_registration PATCH /api/v1/users(.:format) devise/registrations#update {:format=>:json}
PUT /api/v1/users(.:format) devise/registrations#update {:format=>:json}
DELETE /api/v1/users(.:format) devise/registrations#destroy {:format=>:json}
POST /api/v1/users(.:format) devise/registrations#create {:format=>:json}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |