Spec-Zone.ru › Ruby on Rails 4.2

класс ActionDispatch::Request

Родитель:
Rack::Request
Включенные модули:
ActionDispatch::Http::Cache::Request, ActionDispatch::Http::MimeNegotiation, ActionDispatch::Http::Parameters, ActionDispatch::Http::FilterParameters, ActionDispatch::Http::URL

Константы

ENV_METHODS
HTTP_METHODS
HTTP_METHOD_LOOKUP
LOCALHOST
RFC2518
RFC2616

Список HTTP-методов запросов из следующих RFC: Hypertext Transfer Protocol – HTTP/1.1 (www.ietf.org/rfc/rfc2616.txt) HTTP Extensions for Distributed Authoring – WEBDAV (www.ietf.org/rfc/rfc2518.txt) Versioning Extensions to WebDAV (www.ietf.org/rfc/rfc3253.txt) Ordered Collections Protocol (WebDAV) (www.ietf.org/rfc/rfc3648.txt) Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol (www.ietf.org/rfc/rfc3744.txt) Web Distributed Authoring and Versioning (WebDAV) SEARCH (www.ietf.org/rfc/rfc5323.txt) Calendar Extensions to WebDAV (www.ietf.org/rfc/rfc4791.txt) PATCH Метод для HTTP (www.ietf.org/rfc/rfc5789.txt)

RFC3253
RFC3648
RFC3744
RFC4791
RFC5323
RFC5789

Публичные Классовые Методы

new(env) Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 45
def initialize(env)
  super
  @method            = nil
  @request_method    = nil
  @remote_ip         = nil
  @original_fullpath = nil
  @fullpath          = nil
  @ip                = nil
  @uuid              = nil
end
Вызывает метод родительского класса ActionDispatch::Http::URL.new

Общедоступные методы экземпляров

GET() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 299
def GET
  @env["action_dispatch.request.query_parameters"] ||= Utils.deep_munge(normalize_encode_params(super || {}))
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
  raise ActionController::BadRequest.new(:query, e)
end

Переопределяет метод Rack's #GET для поддержки безразличного доступа

Вызывает метод суперкласса
Также алиасируется как: query_parameters
POST() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 307
def POST
  @env["action_dispatch.request.request_parameters"] ||= Utils.deep_munge(normalize_encode_params(super || {}))
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
  raise ActionController::BadRequest.new(:request, e)
end

Переопределяет метод Rack's #POST для поддержки безразличного доступа

Вызывает метод суперкласса
Также алиасируется как: request_parameters
authorization() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 316
def authorization
  @env['HTTP_AUTHORIZATION']   ||
  @env['X-HTTP_AUTHORIZATION'] ||
  @env['X_HTTP_AUTHORIZATION'] ||
  @env['REDIRECT_X_HTTP_AUTHORIZATION']
end

Возвращает заголовок авторизации независимо от того, был ли он указан напрямую или через один из альтернативных способов проксирования.

body() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 262
def body
  if raw_post = @env['RAW_POST_DATA']
    raw_post.force_encoding(Encoding::BINARY)
    StringIO.new(raw_post)
  else
    @env['rack.input']
  end
end

Тело запроса — это поток ввода IO. Если переменная среды RAW_POST_DATA уже задана, оберните её в StringIO.

check_path_parameters!() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 56
def check_path_parameters!
  # If any of the path parameters has an invalid encoding then
  # raise since it's likely to trigger errors further on.
  path_parameters.each do |key, value|
    next unless value.respond_to?(:valid_encoding?)
    unless value.valid_encoding?
      raise ActionController::BadRequest, "Invalid parameter: #{key} => #{value}"
    end
  end
end
content_length() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 213
def content_length
  super.to_i
end

Возвращает длину содержимого запроса как целое число.

Вызывает метод суперкласса
cookie_jar() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/cookies.rb, line 10
def cookie_jar
  env['action_dispatch.cookies'] ||= Cookies::CookieJar.build(self)
end
deep_munge(hash) Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 329
def deep_munge(hash)
  ActiveSupport::Deprecation.warn(
    'This method has been extracted into `ActionDispatch::Request::Utils.deep_munge`. Please start using that instead.'
  )

  Utils.deep_munge(hash)
end

Вынесено в ActionDispatch::Request::Utils.deep_munge, но сохранено здесь для обратной совместимости.

delete?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 157
def delete?
  HTTP_METHOD_LOOKUP[request_method] == :delete
end

Это запрос DELETE? Эквивалентно request.request_method_symbol == :delete.

flash() Показать исходный код
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 8
def flash
  @env[Flash::KEY] ||= Flash::FlashHash.from_session_value(session["flash"])
end

Доступ к содержимому flash. Используйте flash["notice"] для чтения сообщения, которое вы туда поместили, или flash["notice"] = "hello" для добавления нового.

form_data?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 271
def form_data?
  FORM_DATA_MEDIA_TYPES.include?(content_mime_type.to_s)
end
fullpath() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 192
def fullpath
  @fullpath ||= super
end

Возвращает полное имя пути, включая параметры последнего запрошенного URL.

# get "/articles"
request.fullpath # => "/articles"

# get "/articles?page=2"
request.fullpath # => "/articles?page=2"
Вызывает метод суперкласса
get?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 133
def get?
  HTTP_METHOD_LOOKUP[request_method] == :get
end

Это запрос GET (или HEAD)? Эквивалентно request.request_method_symbol == :get.

head?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 163
def head?
  HTTP_METHOD_LOOKUP[request_method] == :head
end

Это запрос HEAD? Эквивалентно request.request_method_symbol == :head.

headers() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 170
def headers
  Http::Headers.new(@env)
end

Обеспечивает доступ к HTTP-заголовкам запроса, например:

request.headers["Content-Type"] # => "text/plain"
ip() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 225
def ip
  @ip ||= super
end
Вызывает метод суперкласса
key?(key) Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 67
def key?(key)
  @env.key?(key)
end
local?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 324
def local?
  LOCALHOST =~ remote_addr && LOCALHOST =~ remote_ip
end

Истина, если запрос пришёл с localhost, 127.0.0.1.

media_type() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 208
def media_type
  content_mime_type.to_s
end

Тип MIME запроса.

# get "/articles"
request.media_type # => "application/x-www-form-urlencoded"
method() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 122
def method
  @method ||= check_method(env["rack.methodoverride.original_method"] || env['REQUEST_METHOD'])
end

Возвращает исходное значение REQUEST_METHOD из среды, даже если оно было переопределено посредством middleware. Дополнительную информацию см. в request_method.

method_symbol() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 127
def method_symbol
  HTTP_METHOD_LOOKUP[method]
end

Возвращает символ из метода method

original_fullpath() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 181
def original_fullpath
  @original_fullpath ||= (env["ORIGINAL_FULLPATH"] || fullpath)
end

Возвращает строку с полным запрошенным путём и параметрами.

# get '/foo'
request.original_fullpath # => '/foo'

# get '/foo?bar'
request.original_fullpath # => '/foo?bar'
original_url() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 200
def original_url
  base_url + original_fullpath
end

Возвращает исходный URL запроса в виде строки.

# get "/articles?page=2"
request.original_url # => "http://www.example.com/articles?page=2"
patch?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 145
def patch?
  HTTP_METHOD_LOOKUP[request_method] == :patch
end

Это запрос PATCH? Эквивалентно request.request_method == :patch.

post?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 139
def post?
  HTTP_METHOD_LOOKUP[request_method] == :post
end

Это запрос POST? Эквивалентно request.request_method_symbol == :post.

put?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 151
def put?
  HTTP_METHOD_LOOKUP[request_method] == :put
end

Это запрос PUT? Эквивалентно request.request_method_symbol == :put.

END_OF_DOCUMENT_MARKER
query_parameters()
Псевдоним для: GET
raw_post() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 251
def raw_post
  unless @env.include? 'RAW_POST_DATA'
    raw_post_body = body
    @env['RAW_POST_DATA'] = raw_post_body.read(content_length)
    raw_post_body.rewind if raw_post_body.respond_to?(:rewind)
  end
  @env['RAW_POST_DATA']
end

Считывает тело запроса. Это полезно для веб-сервисов, которые должны работать непосредственно с сырыми запросами.

remote_ip() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 230
def remote_ip
  @remote_ip ||= (@env["action_dispatch.remote_ip"] || ip).to_s
end

IP-адрес отправителя, обычно устанавливается посредством middleware RemoteIp.

request_method() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 104
def request_method
  @request_method ||= check_method(env["REQUEST_METHOD"])
end

Возвращает HTTP-метод, который должно видеть приложение. В случае, если метод был переопределен middleware (например, если запрос HEAD был преобразован в #GET, или если параметр _method был использован для определения метода, который должно использовать приложение), этот метод возвращает переопределенное значение, а не исходное.

request_method_symbol() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 115
def request_method_symbol
  HTTP_METHOD_LOOKUP[request_method]
end

Возвращает символьное представление метода request_method.

request_parameters()
Псевдоним для: POST
reset_session() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 281
def reset_session
  if session && session.respond_to?(:destroy)
    session.destroy
  else
    self.session = {}
  end
  @env['action_dispatch.request.flash_hash'] = nil
end

TODO Это следует разделить на AD::Request::Session и, вероятно, включить в middleware сессий.

server_software() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 245
def server_software
  (@env['SERVER_SOFTWARE'] && /^([a-zA-Z]+)/ =~ @env['SERVER_SOFTWARE']) ? $1.downcase : nil
end

Возвращает имя HTTP-серверного программного обеспечения в нижнем регистре.

session_options=(options) Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 294
def session_options=(options)
  Session::Options.set @env, options
end
uuid() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 240
def uuid
  @uuid ||= env["action_dispatch.request_id"]
end

Возвращает уникальный идентификатор запроса, который основан либо на заголовке X-Request-Id, который может генерироваться брандмауэром, балансировщиком нагрузки или веб-сервером, либо на middleware RequestId (которое устанавливает переменную окружения action_dispatch.request_id).

Этот уникальный идентификатор полезен для отслеживания запроса от начала до конца в рамках ведения журнала или отладки. Он опирается на переменную rack, установленную middleware ActionDispatch::RequestId.

xhr?()
Псевдоним для: xml_http_request?
xml_http_request?() Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 220
def xml_http_request?
  @env['HTTP_X_REQUESTED_WITH'] =~ /XMLHttpRequest/i
end

Возвращает true, если заголовок «X-Requested-With» содержит «XMLHttpRequest» (регистронезависимо), что может потребоваться добавить вручную в зависимости от выбранных JavaScript библиотек и фреймворков.

Также алиас для: xhr?

Защищенные методы экземпляров

parse_query(qs) Показать исходный код
# File actionpack/lib/action_dispatch/http/request.rb, line 338
def parse_query(qs)
  Utils.deep_munge(super)
end
Вызывает метод суперкласса

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API