ruby 机架式中间件-添加了什么标头?

nwlqm0z1  于 2023-06-29  发布在  Ruby
关注(0)|答案(1)|浏览(94)

在我的Rails 7应用程序中,我想为传入的请求实现幂等性。我认为这是一个使用Rack中间件进行此类操作的好例子。所以实现很简单:

class IdempotencyMiddleware
    def initialize(app)
      @app = app
    end

    def call(env)
      if (key = env['HTTP_CE_IDEMPOTENCYKEY']).present?
        return [200, { 'Content-Type' => 'application/json' }, ['']] if IdempotencyKey.exists?(key:)

        IdempotencyKey.create!(key:)
      end
      @app.call(env)
    end
  end

# config/initializers/idempotency_middleware.rb
Rails.application.config.middleware.use IdempotencyMiddleware

我想检查传入的请求是否有ce-idempotencykey。所以问题是-我应该检查HTTP_CE_IDEMPOTENCYKEY还是只检查ce-idempotencykey?我找不到任何相关的东西来解释我该走哪条路。

cygmwpex

cygmwpex1#

在Rack中间件的级别上,环境变量仍然是未转换的。请参阅Rack specification,特别是有关 *HTTP_变量 * 的部分。
这意味着在Rack中间件中使用大写字符、下划线分隔的环境变量键名是绝对正确的。

相关问题