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