Spec-Zone.ru › Ruby 4.0
  1. Net::
  2. HTTPGenericRequest

class Net::HTTPGenericRequest

Родительский класс:
Object
Подключённые модули:
Net::HTTPHeader

HTTPGenericRequest — родительский класс Net::HTTPRequest.

Не используйте этот класс напрямую; вместо этого используйте подкласс Net::HTTPRequest.

Об примерах

Предполагается, что в приведённых здесь примерах загружен net/http (который также загружает uri):

require 'net/http'

Во многих примерах кода используются следующие тестовые сайты:

  • jsonplaceholder.typicode.com.

  • example.com.

В некоторых примерах также предполагается наличие следующих переменных:

uri = URI('https://jsonplaceholder.typicode.com/')
uri.freeze # Examples may not modify.
hostname = uri.hostname # => "jsonplaceholder.typicode.com"
path = uri.path         # => "/"
port = uri.port         # => 443

Это позволяет записывать запросы в примерах следующим образом:

Net::HTTP.get(uri)
Net::HTTP.get(hostname, '/index.html')
Net::HTTP.start(hostname) do |http|
  http.get('/todos/1')
  http.get('/todos/2')
end

В примере, где сначала требуется изменить URI, дублируется uri, а затем изменяется копия:

_uri = uri.dup
_uri.path = '/todos/1'

Атрибуты

body [R]

Возвращает строковое тело запроса или nil, если оно отсутствует:

req = Net::HTTP::Post.new(uri)
req.body # => nil
req.body = '{"title": "foo","body": "bar","userId": 1}'
req.body # => "{\"title\": \"foo\",\"body\": \"bar\",\"userId\": 1}"
body_stream [R]

Возвращает объект потока тела запроса или nil, если он отсутствует:

req = Net::HTTP::Post.new(uri)          # => #<Net::HTTP::Post POST>
req.body_stream                         # => nil
require 'stringio'
req.body_stream = StringIO.new('xyzzy') # => #<StringIO:0x0000027d1e5affa8>
req.body_stream                         # => #<StringIO:0x0000027d1e5affa8>
decode_content [R]

Возвращает false, если заголовок запроса 'Accept-Encoding' задан вручную или удалён (что указывает на намерение пользователя самостоятельно обработать кодирование ответа), и true в противном случае:

req = Net::HTTP::Get.new(uri) # => #<Net::HTTP::Get GET>
req['Accept-Encoding']        # => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3"
req.decode_content            # => true
req['Accept-Encoding'] = 'foo'
req.decode_content            # => false
req.delete('Accept-Encoding')
req.decode_content            # => false
method [R]

Возвращает имя метода запроса в виде строки:

Net::HTTP::Get.new(uri).method  # => "GET"
Net::HTTP::Post.new(uri).method # => "POST"
path [R]

Возвращает путь запроса в виде строки:

Net::HTTP::Get.new(uri).path # => "/"
Net::HTTP::Post.new('example.com').path # => "example.com"
uri [R]

Возвращает объект URI для запроса или nil, если он отсутствует:

Net::HTTP::Get.new(uri).uri
# => #<URI::HTTPS https://jsonplaceholder.typicode.com/>
Net::HTTP::Get.new('example.com').uri # => nil

Открытые методы экземпляра

body= (str) Показать исходный код
# File lib/net/http/generic_request.rb, line 176
def body=(str)
  @body = str
  @body_stream = nil
  @body_data = nil
  str
end

Устанавливает тело запроса:

req = Net::HTTP::Post.new(uri)
req.body # => nil
req.body = '{"title": "foo","body": "bar","userId": 1}'
req.body # => "{\"title\": \"foo\",\"body\": \"bar\",\"userId\": 1}"
body_stream= (input) Показать исходный код
# File lib/net/http/generic_request.rb, line 201
def body_stream=(input)
  @body = nil
  @body_stream = input
  @body_data = nil
  input
end

Устанавливает поток тела запроса:

req = Net::HTTP::Post.new(uri)          # => #<Net::HTTP::Post POST>
req.body_stream                         # => nil
require 'stringio'
req.body_stream = StringIO.new('xyzzy') # => #<StringIO:0x0000027d1e5affa8>
req.body_stream                         # => #<StringIO:0x0000027d1e5affa8>
inspect () Показать исходный код
# File lib/net/http/generic_request.rb, line 98
def inspect
  "\#<#{self.class} #{@method}>"
end

Возвращает строковое представление запроса:

Net::HTTP::Post.new(uri).inspect # => "#<Net::HTTP::Post POST>"
pretty_print (q) Показать исходный код
# File lib/net/http/generic_request.rb, line 116
def pretty_print(q)
  q.object_group(self) {
    q.breakable
    q.text @method
    q.breakable
    q.text "path="; q.pp @path
    q.breakable
    q.text "headers="; q.pp to_hash
  }
end

Возвращает строковое представление запроса с подробной информацией для pp:

require 'pp'
post = Net::HTTP::Post.new(uri)
post.inspect # => "#<Net::HTTP::Post POST>"
post.pretty_inspect
# => #<Net::HTTP::Post
      POST
      path="/"
      headers={"accept-encoding" => ["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"],
       "accept" => ["*/*"],
       "user-agent" => ["Ruby"],
       "host" => ["www.ruby-lang.org"]}>
request_body_permitted? () Показать исходный код
# File lib/net/http/generic_request.rb, line 142
def request_body_permitted?
  @request_has_body
end

Возвращает значение, указывающее, может ли запрос содержать тело:

Net::HTTP::Post.new(uri).request_body_permitted? # => true
Net::HTTP::Get.new(uri).request_body_permitted?  # => false
response_body_permitted? () Показать исходный код
# File lib/net/http/generic_request.rb, line 151
def response_body_permitted?
  @response_has_body
end

Возвращает значение, указывающее, может ли ответ содержать тело:

Net::HTTP::Post.new(uri).response_body_permitted? # => true
Net::HTTP::Head.new(uri).response_body_permitted? # => false

Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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