Атрибуты объекта Response



Объект Response инкапсулирует информацию, которую передает сервер, а также предоставляет набор методов и атрибутов для доступа к данным. Информации достаточно много – время выполнения запроса, заголовки, код статуса, содержимое ответа и так далее.

Разработчику важно понимать назначение и принцип использования данных атрибутов. Это не только упрощает работу над проектами, но и делает код более эффективным и предсказуемым. Далее кратко будут рассмотрены основные атрибуты.

Ключевые характеристики объекта Response

— инкапсуляция данных. Объект аккумулирует все составляющие HTTP-ответа и предоставляет удобный доступ к отдельным элементам;

— легковесность. Объект максимально оптимизирован в контексте потребления ресурсов, что позволяет использовать его в высоконагруженных приложениях;

— иммутабельность. После создания объект нельзя изменить, все данные и атрибуты являются константами.

Особенности поведения объекта Response

— доступ к данным. Предоставляются удобные методы для доступа к отдельным составляющим ответа;

— потоковая обработка. Есть возможность настройки потоковой обработки данных, что обеспечивает работу с большими объемами информации;

— автоматическая десериализация. Ряд методов позволяют автоматически преобразовать данные в объект Python;

— обработка исключений. При неудачном запросе объект не генерирует исключение, а передает соответствующий статус-код. Это позволяет разработчику корректно обработать ситуацию в коде, что улучшает стабильность работы приложения.

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

Стандартный запрос имеет формат:

response = requests.get('https://httpbin.org/get')

После выполнения кода в переменную response заносится объект Response, что позволяет получить отдельные элементы полученного ответа.

Структура объекта выглядит примерно так:

Response {
    status_code: 200,
    headers: {...},
    url: 'https://httpbin.org/get',
    text: '...',
    content: b'...',
    json: <method>,
    elapsed: <datetime.timedelta>,
    ...
}

Здесь status_code, headers, url, text, content и так далее – атрибуты объекта, elapsed и json – методы, которые можно использовать.

Важно понимать, что это только способ продемонстрировать структуру объекта. В реальной работе для доступа используется точечная нотация, например, response.status_code или response.json().

Далее будут перечислены доступные методы:

status_code — HTTP-код статуса ответа

text — текстовое представление содержимого ответа;

content – содержимое ответа в виде байтов;

json – метод для десериализации JSON-ответа;

headers – заголовки HTTP, возвращаемые сервером;

url – исходный URL-адрес, на который был выполнен запрос;

encoding – кодировка ответа;

elapsed – время, затраченное на выполнение запроса;

cookies – куки, возвращаемые сервером;

history – список объектов Response, представляющих историю переадресаций;

ok – логический атрибут, указывающий, был ли запрос успешным (коды 2xx);

Reason – сообщение статуса HTTP (например, «OK», «Not Found»).

Для лучшего понимание работы с атрибутами можно использовать следующий код:

import requests

# URL для примеров
url = "https://httpbin.org/user-agent"

# Выполняем GET-запрос
response = requests.get(url)

# status_code: HTTP-код статуса ответа.
print("HTTP-код статуса ответа:", response.status_code)

# text: Текстовое представление содержимого ответа.
print("Текстовое содержимое ответа:", response.text)

# content: Содержимое ответа в виде байтов.
print("Содержимое ответа в виде байтов:", response.content)

# json: Метод для десериализации JSON-ответа.
json_response = response.json()
print("Десериализованный JSON-ответ:", json_response)

# headers: Заголовки HTTP, возвращаемые сервером.
print("Заголовки HTTP:", response.headers)

# url: Исходный URL-адрес, на который был выполнен запрос.
print("Исходный URL-адрес запроса:", response.url)

# encoding: Кодировка ответа.
print("Кодировка ответа:", response.encoding)

# elapsed: Время, затраченное на выполнение запроса.
print("Время выполнения запроса:", response.elapsed)

# cookies: Куки, возвращаемые сервером.
print("Куки, возвращаемые сервером:", response.cookies)

# history: Список объектов Response, представляющих историю перенаправлений.
print("История перенаправлений:", response.history)

# ok: Логический атрибут, указывающий, был ли запрос успешным (коды 2xx).
print("Запрос успешен (коды 2xx):", response.ok)

# reason: Сообщение статуса HTTP (например, "OK", "Not Found").
print("Сообщение статуса HTTP:", response.reason)


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: