класс ActionDispatch::Http::Headers
Заголовки HTTP Action Dispatch Headers
Предоставляет доступ к заголовкам HTTP-запроса из окружения.
env = { "CONTENT_TYPE" => "text/plain", "HTTP_USER_AGENT" => "curl/7.43.0" }
headers = ActionDispatch::Http::Headers.from_hash(env)
headers["Content-Type"] # => "text/plain"
headers["User-Agent"] # => "curl/7.43.0"
Также обратите внимание: когда сервер Rack сопоставляет заголовки с переменными типа CGI, и дефисы, и символы подчёркивания преобразуются в символы подчёркивания. На этом этапе устранить эту неоднозначность уже невозможно. Следует интерпретировать и символы подчёркивания, и дефисы так, как если бы изначально были переданы дефисы.
# GET / HTTP/1.1 # ... # User-Agent: curl/7.43.0 # X_Custom_Header: token headers["X_Custom_Header"] # => nil headers["X-Custom-Header"] # => "token"
Константы
- CGI_VARIABLES
- HTTP_HEADER
Открытые методы класса
# File actionpack/lib/action_dispatch/http/headers.rb, line 54 def self.from_hash(hash) new ActionDispatch::Request.new hash end
Открытые методы экземпляра
# File actionpack/lib/action_dispatch/http/headers.rb, line 63 def [](key) @req.get_header env_name(key) end
Возвращает значение для указанного ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 68 def []=(key, value) @req.set_header env_name(key), value end
Устанавливает указанное значение для ключа, сопоставленного с @env.
# File actionpack/lib/action_dispatch/http/headers.rb, line 73 def add(key, value) @req.add_header env_name(key), value end
Добавляет значение в заголовок с несколькими значениями, например Vary или Accept-Encoding.
# File actionpack/lib/action_dispatch/http/headers.rb, line 98 def each(&block) @req.each_header(&block) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 118 def env; @req.env.dup; end
# File actionpack/lib/action_dispatch/http/headers.rb, line 90
def fetch(key, default = DEFAULT)
@req.fetch_header(env_name(key)) do
return default unless default == DEFAULT
return yield if block_given?
raise KeyError, key
end
end Возвращает значение для указанного ключа, сопоставленного с @env.
Если ключ не найден и необязательный блок кода не передан, возникает исключение KeyError.
Если блок кода передан, он будет выполнен, а его результат возвращён.
# File actionpack/lib/action_dispatch/http/headers.rb, line 77 def key?(key) @req.has_header? env_name(key) end
# File actionpack/lib/action_dispatch/http/headers.rb, line 104 def merge(headers_or_env) headers = @req.dup.headers headers.merge!(headers_or_env) headers end
Возвращает новый экземпляр Http::Headers, содержащий содержимое headers_or_env и исходного экземпляра.
# File actionpack/lib/action_dispatch/http/headers.rb, line 112
def merge!(headers_or_env)
headers_or_env.each do |key, value|
@req.set_header env_name(key), value
end
end Добавляет содержимое headers_or_env к записям исходного экземпляра; значения из headers_or_env заменяют значения для совпадающих ключей.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.