我们正在我们的rails服务器中迁移到更新版本的API,并希望启用Deflater / gzip -compression,但仅适用于新的api-routes。
routes.rb与此类似:
....
....
def add_api_routes
resources :foo, only: [:index, :show]
resources :bar, only: [:index, :show]
end
namespace :api, defaults: { format: 'json' }, constraints: { subdomain: /internal|^$/ }, path: '/' do
namespace :v2, module: nil do
add_api_routes
end
namespace :v1, module: nil do
add_api_routes
end
end
....
....
我们确实将以下行添加到application.rb
...
config.middleware.use Rack::Deflater
...
但这可以为这两个版本启用gzip。
是否可以仅为一个版本的api启用它。 (例如.v2)?
感谢。 任何帮助将不胜感激。
答案 0 :(得分:2)
正如@apneadiving在评论中提到的那样。根据条件:https://github.com/rack/rack/blob/master/lib/rack/deflater.rb#L31,您可以执行以下操作:
config.middleware.use Rack::Deflater, :if => lambda { |env, status, headers, body| env["PATH_INFO"] == "/v2/" } # or Regular expression: env["PATH_INFO"].match(/\/v2\//) matches -> /v2/