Атрибут status_code
Атрибут status_code принадлежит классу HTTPException
и хранит целочисленный HTTP-код состояния,
который сервер отправит клиенту вместе с сообщением об ошибке.
Значение задаётся при создании исключения первым позиционным
или именованным параметром status_code.
Атрибут доступен для чтения у экземпляра исключения
и позволяет программно узнать код ошибки.
Синтаксис
from fastapi import HTTPException
exc = HTTPException(status_code=404, detail='...')
exc.status_code
Пример
Давайте выбросим исключение с кодом 404
и прочитаем атрибут status_code внутри обработчика:
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get('/user/{name}')
def user(name: str):
if name != 'abcde':
exc = HTTPException(status_code=404, detail='user not found')
return {'code': exc.status_code}
return {'name': name}
Результат выполнения кода для адреса /user/user:
{"code": 404}
Пример
Давайте создадим исключение с кодом 403
и выбросим его через raise, чтобы FastAPI вернул клиенту ошибку:
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get('/article/{name}')
def article(name: str):
if name != 'article':
raise HTTPException(status_code=403, detail='forbidden')
return {'name': name}
Результат выполнения кода для адреса /article/hello:
{"detail": "forbidden"}
Пример
Давайте перехватим исключение и сравним значение
атрибута status_code с константой:
from fastapi import FastAPI, HTTPException
app = FastAPI()
@app.get('/check')
def check():
try:
raise HTTPException(status_code=400, detail='bad request')
except HTTPException as exc:
return {'is_bad': exc.status_code == 400}
Результат выполнения кода:
{"is_bad": true}
Смотрите также
-
класс
HTTPException,
который выбрасывает HTTP-ошибку с кодом состояния -
атрибут
detail,
который хранит текст сообщения об ошибке -
атрибут
headers,
который задаёт дополнительные HTTP-заголовки ответа -
класс
RequestValidationError,
который возникает при ошибке валидации данных запроса