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

Перенаправления, заголовки и коды статуса

Обычно ответ на запрос содержит в себе код статуса HTTP 200, который указывает что "все OK." Конкретно, код 200 означает, что адрес, определенный в запросе указывает на верный ресурс и его содержимое было включено в ответ сервера. При разных обстоятельствах могут выдаваться различные коды ошибок. К примеру, если при обработке запроса произошла ошибка, связанная с внутренним состоянием сервера, то будет выдана ошибка с номером 500, означающая "Ошибка сервера."

Обработчик запроса имеет метод error(...), который выдает соответствующее сообщение об ошибке с заданным кодом. Например:

CmNsYXNzIE15SGFuZGxlcih3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgpkZWYgZ2V0KHNlbGYpOgpzZWxmLnJlc3BvbnNlLm91dC53cml0ZSgi0JLRiyDQv9C+0L/RgNC+0YHQuNC70Lgg0YfRgtC+LdGC0L4g0YHQtNC10LvQsNGC0YwuIikKdHJ5Ogpkb1NvbWV0aGluZygpCnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKCLQrdGC0L4g0YHQtNC10LvQsNC90L4hIikKZXhjZXB0IEVycm9yOgojINCe0YfQuNGB0YLQuNGC0Ywg0LLRi9Cy0L7QtCDQuCDQstC10YDQvdGD0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUg0L7QsSDQvtGI0LjQsdC60LUuCnNlbGYuZXJyb3IoNTAwKQo==

Метод error(...) принимает в параметрах числовой код статуса протокола HTTP и подготавливает ответ, используемый с этой ошибкой. Он также выполняет очистку выходного буфера, поэтому разработчик может не заботиться об этом.

Другим распространенным случаем использования кодов статуса является осуществление перенаправления пользователя на другой адрес. Оно может быть как постоянным, определяющим, что для будущих запросов к ресурсу можно автоматически использовать значение адреса, указанное в перенаправлении. Или быть временным, когда браузер должен повторно выполнить запрос по исходному адресу и получить перенаправление на другой. Типовым методом работы с временными запросами является задание перенаправления после успешного получения данных из формы для предотвращения повторной их отправки пользователем в случае нажатия кнопки "Назад" браузера.

Обработчик запроса содержит метод redirect(...) для подготовки ответа с перенаправлением на другой адрес. Например:

CmNsYXNzIEZvcm1IYW5kbGVyKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CmRlZiBwb3N0KHNlbGYpOgppZiBwcm9jZXNzRm9ybURhdGEoc2VsZi5yZXF1ZXN0KToKc2VsZi5yZWRpcmVjdCgiL2hvbWUiKQplbHNlOgojINCe0YLQvtCx0YDQsNC30LjRgtGMINGE0L7RgNC80YMg0YEg0YHQvtC+0LHRidC10L3QuNGP0LzQuCDQvtCxINC+0YjQuNCx0LrQsNGFLgo==

Метод redirect(...) принимает в качестве первого параметра адрес назначения. По умолчанию, выполняется временное перенаправление. При задании опционального параметра permanent=True используется код постоянного перенаправления.

Методы обработчика запросов error(...) и redirect(...) производят изменение кодов статуса HTTP ответа. Метод redirect(...) также меняет заголовок ответа HTTP для указания нового адреса перенаправления для клиента. Объект Response содержит методы для задания кодов статуса и заголовков HTTP напрямую.

Метод set_status(...) объекта выполяет замену кодов статуса для ответа. Он принимает в качестве первого параметра числовой код. Опциональный второй параметр может задавать текстовое сообщение, которое используется вместо соответствующего по умолчанию этому коду.

Атрибут headers объекта является экземпляром класса wsgiref.headers.Headers, который представляет собой HTTP заголовки ответа. Для информации о том, как можно манипулировать с заголовками HTTP ответа, смотрите документацию к модулю wsgiref.headers.

CmNsYXNzIFN0YXR1c0ltYWdlSGFuZGxlcih3ZWJhcHAuUmVxdWVzdEhhbmRsZXIpOgpkZWYgZ2V0KHNlbGYpOgppbWdfZGF0YSA9IGdldF9zdGF0dXNfaW1hZ2VfZm9yX2N1cnJlbnRfdXNlcigpCnNlbGYucmVzcG9uc2UuaGVhZGVyc1siQ29udGVudC1UeXBlIl0gPSAiaW1hZ2UvcG5nIgpzZWxmLnJlc3BvbnNlLmhlYWRlcnMuYWRkX2hlYWRlcigiRXhwaXJlcyIsICJUaHUsIDAxIERlYyAxOTk0IDE2OjAwOjAwIEdNVCIpCnNlbGYucmVzcG9uc2Uub3V0LndyaXRlKGltZ19kYXRhKQo==