класс Net::HTTPResponse
Этот класс является базовым классом для классов ответов Net::HTTP.
Об этих примерах
В приведённых здесь примерах предполагается, что был подключён 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'
Возвращаемые ответы
Метод Net::HTTP.get_response возвращает экземпляр одного из подклассов Net::HTTPResponse:
Net::HTTP.get_response(uri) # => #<Net::HTTPOK 200 OK readbody=true> Net::HTTP.get_response(hostname, '/nosuch') # => #<Net::HTTPNotFound 404 Not Found readbody=true>
То же относится и к методу Net::HTTP#request:
req = Net::HTTP::Get.new(uri) Net::HTTP.start(hostname) do |http| http.request(req) end # => #<Net::HTTPOK 200 OK readbody=true>
Класс Net::HTTPResponse включает модуль Net::HTTPHeader, предоставляющий доступ к значениям заголовков ответа с помощью, в частности:
-
Метода
[], работающего как хеш. -
Специальных методов чтения, например
content_type.
Примеры:
res = Net::HTTP.get_response(uri) # => #<Net::HTTPOK 200 OK readbody=true> res['Content-Type'] # => "text/html; charset=UTF-8" res.content_type # => "text/html"
Подклассы ответов
Для каждого кода состояния HTTP у класса Net::HTTPResponse есть подкласс. Класс ответа для заданного кода можно найти так:
Net::HTTPResponse::CODE_TO_OBJ['200'] # => Net::HTTPOK Net::HTTPResponse::CODE_TO_OBJ['400'] # => Net::HTTPBadRequest Net::HTTPResponse::CODE_TO_OBJ['404'] # => Net::HTTPNotFound
Код состояния также можно получить из объекта ответа:
Net::HTTP.get_response(uri).code # => "200" Net::HTTP.get_response(hostname, '/nosuch').code # => "404"
Подклассы ответов (отступы показывают иерархию классов):
-
Net::HTTPUnknownResponse(для необработанных расширений HTTP). -
-
Net::HTTPContinue(100) -
Net::HTTPSwitchProtocol(101) -
Net::HTTPProcessing(102) -
Net::HTTPEarlyHints(103)
-
-
-
Net::HTTPOK(200) -
Net::HTTPCreated(201) -
Net::HTTPAccepted(202) -
Net::HTTPNoContent(204) -
Net::HTTPResetContent(205) -
Net::HTTPPartialContent(206) -
Net::HTTPMultiStatus(207) -
Net::HTTPAlreadyReported(208) -
Net::HTTPIMUsed(226)
-
-
-
Net::HTTPMultipleChoices(300) -
Net::HTTPFound(302) -
Net::HTTPSeeOther(303) -
Net::HTTPNotModified(304) -
Net::HTTPUseProxy(305)
-
-
-
Net::HTTPBadRequest(400) -
Net::HTTPUnauthorized(401) -
Net::HTTPPaymentRequired(402) -
Net::HTTPForbidden(403) -
Net::HTTPNotFound(404) -
Net::HTTPNotAcceptable(406) -
Net::HTTPRequestTimeOut(408) -
Net::HTTPConflict(409) -
Net::HTTPGone(410) -
Net::HTTPLengthRequired(411) -
Net::HTTPLocked(423) -
Net::HTTPUpgradeRequired(426) -
Net::HTTPTooManyRequests(429)
-
-
-
Net::HTTPNotImplemented(501) -
Net::HTTPBadGateway(502) -
Net::HTTPGatewayTimeOut(504) -
Net::HTTPLoopDetected(508) -
Net::HTTPNotExtended(510)
Открытые методы класса
# File lib/net/http/response.rb, line 138 def body_permitted? self::HAS_BODY end
true, если ответ содержит тело.
Ruby Core © 1993–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.