HTTP üstbilgileri, gövdeleri vb. Dahil olmak üzere tüm istekleri belirli bir URL'ye kaydetmem gerekiyor. Bu kodu denedim:Belirli bir URL için tüm istek (başlık, gövde vb.) Nasıl kaydedilir?
def index
global_request_logging
end
private
def global_request_logging
http_request_header_keys = request.headers.keys.select{|header_name| header_name.match("^HTTP.*")}
http_request_headers = request.headers.select{|header_name, header_value| http_request_header_keys.index(header_name)}
logger.info "Received #{request.method.inspect} to #{request.url.inspect} from #{request.remote_ip.inspect}. Processing with headers #{http_request_headers.inspect} and params #{params.inspect}"
begin
yield
ensure
logger.info "Responding with #{response.status.inspect} => #{response.body.inspect}"
end
end
Ama request.headers
keys
adında bir yöntem içermiyor söyledi. Ayrıca, bunu yapmak için daha kolay bir yol veya standart olması gerektiğini düşünüyorum. Tercihen, bir mücevher kullanmamak.
Başlık yorumunun bir anahtar yöntemi yoktur. http://api.rubyonrails.org/classes/ActionDispatch/Http/Headers.html Değerleri içeren bir karma olan 'env' adlı bir örnek değişkeni var. Yani 'request.headers.env.keys' yapabilmeniz gerekir. Başlık sınıfının nasıl çalıştığını anlamak için kaynağı kontrol edin, oldukça küçük: https://github.com/rails/rails/blob/e7b0947afdc8c9f4119d06628070667b9e7875d1/actionpack/lib/action_dispatch/http/headers.rb – Brennan