class Net::HTTPGenericRequest
HTTPGenericRequest — родительский класс Net::HTTPRequest.
Не используйте этот класс напрямую; вместо этого используйте подкласс Net::HTTPRequest.
Об примерах
Предполагается, что в приведённых здесь примерах загружен net/http (который также загружает uri):
require 'net/http'
Во многих примерах кода используются следующие тестовые сайты:
В некоторых примерах также предполагается наличие следующих переменных:
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'
Атрибуты
Возвращает строковое тело запроса или 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}"
Возвращает объект потока тела запроса или 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>
Возвращает 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
Возвращает имя метода запроса в виде строки:
Net::HTTP::Get.new(uri).method # => "GET" Net::HTTP::Post.new(uri).method # => "POST"
Возвращает путь запроса в виде строки:
Net::HTTP::Get.new(uri).path # => "/"
Net::HTTP::Post.new('example.com').path # => "example.com"
Открытые методы экземпляра
# 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}"
# 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>
# 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>"
# 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"]}> # 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
# 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.