【问题标题】:How to manage different versions a Rails API with config changes如何通过配置更改管理不同版本的 Rails API
【发布时间】:2021-06-24 20:46:29
【问题描述】:

我目前有一个带有命名空间路由的 Rails 5 API:/api/v1/...

我想发布一个新版本(/api/v2/...),它使用不同的身份验证/CORS 配置。具体来说,v1 使用凭据身份验证。但在 v2 中我想切换到令牌。

我想申请 v2 的更改的简要概述:

# Gemfile
gem rack-cors
# config/application.rb
config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: [:get, :post, :options], credentials: false
  end
end

注意credentials 选项默认是禁用的。 v1 依赖于此进行身份验证。换句话说,v2 正在禁用 v1 需要启用的配置。

我对管理不同环境的不同配置非常熟悉。但我有兴趣根据路线做同样的事情。

/api/v1/... --> 配置A

/api/v2/... --> 配置 B

这可能吗?我发现Rollout gem 似乎可能可以满足我的需要,但我不确定。

如果有更好的方法来解决这个问题,我愿意接受替代方案。世界末日的场景是让我站起来另一个 API 实例来运行新的 API 版本,但我非常想避免这种情况!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 rails-api api-versioning


    【解决方案1】:

    如果您想要基于路由的不同中间件,您可以使用 Rails 引擎或中间件中的正则表达式。这已经在这里讨论过Execute Rack Middleware for Specific Routes in Rails

    【讨论】:

      猜你喜欢
      • 2020-12-28
      • 1970-01-01
      • 2013-03-06
      • 2012-05-20
      • 2014-12-23
      • 1970-01-01
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多