Атрибут code
Атрибут code принадлежит классу HTTPException и хранит целое число - HTTP-статус ошибки, например 404 или 500. Этот код возвращается клиенту в первой строке HTTP-ответа и определяет, как браузер или клиент интерпретирует ответ. Атрибут доступен как у базового класса HTTPException, так и у всех его наследников, таких как NotFound или BadRequest.
Синтаксис
exception.code
Пример
Давайте возбудим исключение NotFound и посмотрим значение атрибута code:
from flask import Flask
from werkzeug.exceptions import NotFound
app = Flask(__name__)
exc = NotFound()
res = exc.code
print(res)
Результат выполнения кода:
404
Пример
Давайте переберём несколько исключений и выведем их коды:
from flask import Flask
from werkzeug.exceptions import BadRequest, Forbidden, NotFound, InternalServerError
app = Flask(__name__)
exceptions = [BadRequest(), Forbidden(), NotFound(), InternalServerError()]
for exc in exceptions:
print(exc.code)
Результат выполнения кода:
400
403
404
500
Пример
Давайте используем атрибут code в обработчике ошибок, чтобы вернуть клиенту нужный статус:
from flask import Flask, jsonify
from werkzeug.exceptions import HTTPException
app = Flask(__name__)
@app.errorhandler(HTTPException)
def handle_exception(exc):
res = jsonify({
'code': exc.code,
'name': exc.name,
'description': exc.description
})
return res, exc.code
При запросе к несуществующему адресу /abcde клиент получит JSON с кодом 404:
{
"code": 404,
"name": "Not Found",
"description": "The requested URL was not found on the server."
}
Смотрите также
-
класс
HTTPException,
которому принадлежит атрибут code -
атрибут
description,
который хранит текстовое описание ошибки -
атрибут
name,
который хранит название ошибки -
метод
get_response,
который формирует HTTP-ответ на основе исключения