Какие ключевые компоненты (классы и функции) предоставляет FastAPI?

Ответ

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

Основные компоненты:

  1. FastAPI: Основной класс для создания экземпляра приложения. Он является точкой входа для определения маршрутов и конфигурации API.
    from fastapi import FastAPI
    app = FastAPI()
  2. APIRouter: Класс для организации маршрутов в модули или под-API. Позволяет структурировать большое приложение, группируя связанные эндпоинты.
    from fastapi import APIRouter
    router = APIRouter(prefix="/api/v1", tags=["items"])
  3. Request / Response: Классы для прямого доступа к объектам HTTP-запроса и формирования HTTP-ответа. Используются, когда требуется низкоуровневый контроль над взаимодействием.
    from fastapi import Request, Response
    # ... в эндпоинте: async def read_root(request: Request, response: Response): ...
  4. Depends: Функция для внедрения зависимостей (Dependency Injection). Позволяет переиспользовать логику, управлять ресурсами и упрощать тестирование, автоматически разрешая зависимости для функций-обработчиков.
    from fastapi import Depends
    # ... async def get_current_user(token: str = Depends(oauth2_scheme)): ...
  5. HTTPException: Класс для генерации стандартных HTTP-ошибок. Позволяет возвращать клиенту корректные статусы и детали ошибок, что важно для предсказуемого поведения API.
    from fastapi import HTTPException, status
    # ... raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Item not found")
  6. Query, Path, Body: Функции для определения и валидации параметров запроса. Они используются для извлечения данных из строки запроса (Query), пути (Path) и тела запроса (Body), а также для применения к ним правил валидации Pydantic.
    from fastapi import Query, Path, Body
    # ... item_id: int = Path(..., gt=0), q: str = Query(None, max_length=50), item: Item = Body(...)
  7. Form, File, UploadFile: Функции и класс для работы с данными из HTML-форм и загрузки файлов. Form используется для полей формы, File для файлов, а UploadFile предоставляет асинхронный интерфейс для работы с загруженными файлами.
    from fastapi import Form, File, UploadFile
    # ... username: str = Form(...), file: UploadFile = File(...)
  8. BackgroundTasks: Класс для выполнения задач в фоновом режиме после отправки HTTP-ответа клиенту. Это полезно для операций, которые не должны блокировать основной поток ответа (например, отправка email, логирование).
    from fastapi import BackgroundTasks
    # ... async def send_notification(background_tasks: BackgroundTasks): ...
  9. Модули безопасности (например, OAuth2PasswordBearer): Классы и функции из fastapi.security для реализации различных схем аутентификации и авторизации (например, OAuth2, API Key).
    from fastapi.security import OAuth2PasswordBearer
    oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
  10. Pydantic BaseModel: Класс из библиотеки Pydantic, используемый FastAPI для определения схем данных (моделей). Обеспечивает автоматическую валидацию входящих данных и сериализацию исходящих.
    from pydantic import BaseModel
    class Item(BaseModel):
        name: str
        price: float

Эти компоненты позволяют разработчикам создавать мощные, валидированные и хорошо документированные API с минимальным количеством кода.