【发布时间】: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