Action Dispatch RequestId
为 action_dispatch.request_id
环境变量提供一个唯一的请求 ID(可以通过 ActionDispatch::Request#request_id
或别名 ActionDispatch::Request#uuid
访问),并将相同的 ID 通过 X-Request-Id
标头发送给客户端。
唯一的请求 ID 既可以基于请求中的 X-Request-Id
标头(通常由防火墙、负载均衡器或 Web 服务器生成),也可以基于(如果此标头不可用)随机生成的 UUID。如果从外部世界接收标头,我们会对其进行清理,使其最多包含 255 个字符,并且只包含字母数字字符和连字符。
唯一的请求 ID 可用于端到端跟踪请求,并且通常最终会成为多个堆栈组件的日志文件的一部分。
方法
类公共方法
new(app, header:) 链接
源代码:显示 | 在 GitHub 上查看
# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 25 def initialize(app, header:) @app = app @header = header @env_header = "HTTP_#{header.upcase.tr("-", "_")}" end
实例公共方法
call(env) 链接
源代码:显示 | 在 GitHub 上查看
# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 31 def call(env) req = ActionDispatch::Request.new env req.request_id = make_request_id(req.get_header(@env_header)) @app.call(env).tap { |_status, headers, _body| headers[@header] = req.request_id } end