跳到內容 跳到搜尋

Action Dispatch RequestId

action_dispatch.request_id env 變數(然後可透過 ActionDispatch::Request#request_id 或別名 ActionDispatch::Request#uuid 存取)取得唯一的請求 ID,並透過 X-Request-Id 標頭將相同的 ID 傳送給客戶端。

唯一的請求 ID 可能是基於請求中的 X-Request-Id 標頭(通常由防火牆、負載平衡器或網路伺服器產生),或者,如果這個標頭不可用,則為隨機的 uuid。如果從外部世界接受標頭,我們會將其清除為最多 255 個字元,且僅限於字母數字和破折號。

唯一的請求 ID 可用於追蹤請求的始末,通常會成為堆疊中多個部分的記錄檔的一部分。

方法
C
N

類別公開方法

new(app, header:)

# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 20
def initialize(app, header:)
  @app = app
  @header = header
end

執行個體公開方法

call(env)

# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 25
def call(env)
  req = ActionDispatch::Request.new env
  req.request_id = make_request_id(req.headers[@header])
  @app.call(env).tap { |_status, headers, _body| headers[@header] = req.request_id }
end