РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
245 of 307 menu

Исключение HTTPException

Исключение HTTPException применяется внутри функций-обработчиков FastAPI для досрочного прерывания обработки запроса и отправки клиенту HTTP-ответа с ошибкой. Первым параметром передаётся код состояния status_code, вторым - тело ответа detail, третьим - словарь заголовков headers.

Когда FastAPI перехватывает это исключение, оно превращается в JSON-ответ вида {"detail": "..."} с указанным кодом состояния. Это удобный способ сообщить клиенту об ошибке без ручного формирования ответа.

Синтаксис

from fastapi import HTTPException raise HTTPException(status_code, detail, headers)

Пример

Давайте выбросим исключение, если запрошенный элемент не найден:

from fastapi import FastAPI, HTTPException app = FastAPI() @app.get('/items/{item_id}') def get_item(item_id: int): if item_id != 1: raise HTTPException(status_code=404, detail='Item not found') return {'item_id': item_id}

Результат выполнения кода для адреса /items/5:

{"detail": "Item not found"}

Пример

Давайте передадим собственные заголовки вместе с исключением:

from fastapi import FastAPI, HTTPException app = FastAPI() @app.get('/user/{name}') def get_user(name: str): if name != 'abcde': raise HTTPException( status_code=403, detail='Access denied', headers={'X-Error': 'Forbidden'} ) return {'name': name}

Результат выполнения кода для адреса /user/user:

{"detail": "Access denied"}

Пример

Давайте используем исключение внутри зависимостей:

<+python+> from fastapi import FastAPI, HTTPException, Depends app = FastAPI() def verify_token(token: str): if token != 'abcde': raise HTTPException(status_code=401, detail='Invalid token') return token @app.get('/protected/') def protected(token: str = Depends(verify_token)): return {'token': token} <-python+>

Результат выполнения кода для адреса /protected/?token=abcde:

{"token": "abcde"}

Смотрите также

  • атрибут status_code,
    который задаёт код состояния HTTP-ответа
  • атрибут detail,
    который хранит тело ответа с описанием ошибки
  • атрибут headers,
    который задаёт дополнительные заголовки ответа
  • исключение RequestValidationError,
    которое возникает при ошибке валидации данных запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить