我在我的Rails RESTFul API服务中使用devise进行身份验证。Devise使我可以使用[POST] http://domain/users
form_data创建一个新用户:
[user]password = 123
[user]email = [email protected]
[user]password_confirmation = 123
然后我把这样devise_for
的命名空间
namespace :api do
namespace :v1 do
devise_for :users,
controllers: {
:registrations => 'api/v1/registrations',
:sessions => 'api/v1/sessions',
:passwords => 'api/v1/passwords'
}
end
end
控制器的文件结构如下所示。
.
├── api
│ └── v1
│ ├── passwords_controller.rb
│ ├── registrations_controller.rb
│ └── sessions_controller.rb
├── application_controller.rb
进行此更改后,我应该使用[POST] http://domain/api/v1/users
创建一个新用户,但是要使用以下form_data
[api_v1_user]password = 123
[api_v1_user]email = [email protected]
[api_v1_user]password_confirmation = 123
我不希望模型名称(即user)以api_v1_作为前缀。因为如果有一天我将api版本切换到v2,那么我必须更新所有客户端API调用!
有任何想法吗?
您可以在路线中尝试以下方法
namespace :api, as: nil do
namespace :v1, as: nil do |version|
devise_for :users,
controllers: {
:registrations => "api/#{version}/registrations",
:sessions => "api/#{version}/sessions",
:passwords => "api/#{version}/passwords"
}
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句