【问题标题】:Rails API with versioning: version in helper names带有版本控制的 Rails API:助手名称中的版本
【发布时间】:2016-09-27 22:26:19
【问题描述】:

(Ruby 2.3.1,Rails 5.0.0.1)

我已经在 URI 中实现了 API 版本控制,并像这样添加了设计令牌身份验证:

constraints subdomain: 'api' do
    scope module: 'api' do  
        namespace :v1 do
            # V1 stuff
            resources :users
            mount_devise_token_auth_for 'User', at: 'auth'
        end
    end
end

因此,“rake routes”(示例行)的结果是:

v1_user GET /v1/users/:id(.:format) api/v1/users#show {:subdomain=>"api"}

现在在我的控制器中,任何与用户相关的助手都包含“v1”版本控制。例如:

before_action :authenticate_v1_user!

我是这个概念的新手,但不应该避免吗?如果我要升级到 v2,我必须通过所有这些帮助程序并确保我会更改它以防止它崩溃?或者升级过程会是什么样子?

感谢您的反馈!这可能是一个非常简单的问题,但我有点困惑。

【问题讨论】:

  • 我会避免在名称中使用版本控制,直到您至少有 2 个不同的版本...所以只需调用它 authenticate_user! 直到您有两种不同的身份验证方式,然后您可以使用 authenticate_v1_user与authenticate_v2_user 区别...虽然我会使用roles 来处理不同的做事方式(仍然保留v1 等在路线中)。

标签: ruby-on-rails ruby versioning


【解决方案1】:

好的,我一直在搜索并找到了一个可行的解决方案(尽管我觉得这有点太“hacky”了):

namespace :v1, as: '' do
    # V1 stuff
    resources :users
    mount_devise_token_auth_for 'User', at: 'auth'
end

所以as: '' 可以解决问题。 (答案来自:Adding prefix to a named route helper under namespace)

如果我想将“v1”重新添加到我的助手名称中,我想我可以手动将它们添加到每个路由中,例如:as: 'new_v1_user_sesssion'

【讨论】:

    猜你喜欢
    • 2016-05-22
    • 2016-03-21
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    • 2012-03-26
    • 2017-05-10
    • 2018-11-22
    • 2020-09-28
    相关资源
    最近更新 更多