Какую роль выполняет Pydantic в FastAPI

Ответ

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

  1. Валидация данных: Pydantic обеспечивает строгую проверку типов для входящих и исходящих данных. Если клиент отправляет данные, не соответствующие модели (например, строку вместо числа), FastAPI автоматически вернет ошибку 422 с подробным описанием.

  2. Сериализация и десериализация: Он автоматически преобразует входящий JSON в объекты Python (десериализация) и, наоборот, объекты Python в исходящий JSON (сериализация).

  3. Автоматическая документация: FastAPI использует Pydantic-модели для генерации JSON Schema, которая встраивается в интерактивную документацию OpenAPI (Swagger UI) и ReDoc.

Пример:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# Pydantic-модель для валидации входящих данных
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.post("/items/")
async def create_item(item: Item):
    return item

В этом примере Pydantic автоматически:

  • Проверит, что name — это строка, а price — число.
  • Преобразует тело входящего POST-запроса в экземпляр класса Item.
  • Сгенерирует схему для документации, где будут указаны типы и обязательность полей.