• Официальный сайт SDK
  • Сайт с примерами кода

Класс Response

Экземпляр класса Response представляет собой данные, которые отправляются в ответ на запрос пользователя.

Класс Response реализован в модуле google.appengine.ext.webapp.

Введение

После того как фреймворк webapp вызывает метод обработчика запроса, его атрибут response инициализируется пустым объектом Response. Метод обработчика выполняет подготовку ответа с помощью работы с экземпляром класса Response: передачей данных в объект out или установкой заголовков ответа headers.

CmltcG9ydCBkYXRldGltZQpjbGFzcyBNeVJlcXVlc3RIYW5kbGVyKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CmRlZiBnZXQoc2VsZik6CnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDsiKQpzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiJmx0O3AmZ3Q70JTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCDQsiDQmNC90YLQtdGA0L3QtdGCISZsdDsvcCZndDsiKQpzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgiJmx0Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiKQpleHBpcmVzX2RhdGUgPSBkYXRldGltZS5kYXRldGltZS51dGNub3coKSArIGRhdGV0aW1lLnRpbWVkZWx0YSgzNjUpCmV4cGlyZXNfc3RyID0gZXhwaXJlc19kYXRlLnN0cmZ0aW1lKCIlZCAlYiAlWSAlSDolTTolUyBHTVQiKQpzZWxmLnJlc3BvbnNlLmhlYWRlcnMuYWRkX2hlYWRlcigiRXhwaXJlcyIsIGV4cGlyZXNfc3RyKQo==

Содержимое, которое вернул обработчик, webapp отправляет в ответ за запрос. Оно является окончательным состоянием объекта Response по завершении метода обработки.

Примечание: Выполнение изменений атрибута объекта не оказывает немедленного эффекта на обмен данными с пользователем. В частности это означает, что фреймворк webapp не позволяет использовать дополнительную логику, такую как потоковая передача данных пользователю. (Обратите внимание, что приложения App Engine не могут это делать ни с фреймворком webapp, ни без него)

По умолчанию в ответах используется код статуса HTTP 200 ("OK"). Для его изменения приложение может воспользоваться методом set_status(). Для описания алгоритма установки кодов ошибок, обратитесь к документации по методу error() объекта RequestHandler.

Если в заголовках ответа Content-Type не указана используемая кодировка текста, автоматически будет использована UTF-8.

Конструктор

Конструктор класса Response определен следующим образом:

class Response()

Ответ за запрос пользователя. Обычно объект приложения WSGIApplication создает экземпляр класса RequestHandler и инициализирует начальное значение объекта Response.

Методы класса

Класс Response имеет следующие методы класса:

Response.http_status_message(code)

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

Параметры:

code
Код ответа по прокотолу HTTP.

Переменные экземпляра

Экземпляр класса Response имеет следующие объекты:

out

Экземпляр класса StringIO, содержащий текст ответа. Все содержимое этого объекта отправляется в ответ на запрос сразу же после завершения работы метода обработчика запроса.

headers

Экземпляр класса wsgiref.headers.Headers, содержащий заголовки ответа. Содержимое этого объекта вставляется в HTTP заголовки ответа сразу же после завершения работы метода обработчика запроса.

По соображениям безопасности, некоторые заголовки не могут быть модифицированы приложением. Смотрите раздел Запрещенные заголовки HTTP.

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

Экземпляр класса Response содержит следующие методы:

set_status(code, message=None)

Устанавливает код статуса протокола HTTP в ответе.

Параметры:

code
Код статуса протокола HTTP, используемый для ответа.
message
Сообщение, отправляемое вместе с кодом статуса HTTP. Если задано None, то используется сообщение по умолчанию, возвращаемое методом .
clear()

Очищает все данные в потоке вывода (out).

wsgi_write(start_response)

Формирует ответ с использованием семантики стандарта WSGI. Обычно приложение напрямую не оперирует этим методом. Вместо этого, фреймворк webapp производит его вызов после завершения работы обработчика запроса.

Параметры:

start_response
WSGI-совместимая функция start_response.

Запрещенные заголовки HTTP ответа

По соображениям безопасности, некоторые заголовки ответа протокола HTTP не могут быть модифицированы приложением. Установка их объекту атрибуту headers объекта Response не даст никакого результата.

  • Content-Encoding
  • Content-Length
  • Date
  • Server
  • Transfer-Encoding