На каких ключевых технологиях построен фреймворк FastAPI?

Ответ

FastAPI построен на двух основных технологиях, которые обеспечивают его высокую производительность и удобство для разработчика:

  1. Starlette — это легковесный ASGI (Asynchronous Server Gateway Interface) фреймворк. FastAPI использует Starlette для всей основной веб-части: маршрутизации (routing), обработки middleware, WebSocket, фоновых задач и т.д. Благодаря ASGI, FastAPI нативно поддерживает асинхронные операции (async/await), что делает его одним из самых быстрых фреймворков для Python.

  2. Pydantic — это библиотека для валидации данных и управления настройками с использованием аннотаций типов Python. FastAPI использует Pydantic для:

    • Валидации данных: Автоматическая проверка типов и форматов входящих данных (тело запроса, query-параметры).
    • Сериализации: Преобразование объектов Python в JSON для ответов.
    • Автоматической генерации документации: FastAPI анализирует модели Pydantic для создания OpenAPI-схемы, которая отображается в интерактивной документации (Swagger UI и ReDoc).

Для запуска FastAPI-приложения также необходим ASGI-сервер, такой как Uvicorn или Hypercorn.

Пример синергии FastAPI и Pydantic:

from fastapi import FastAPI
from pydantic import BaseModel, Field

app = FastAPI()

# 1. Pydantic модель для валидации и сериализации данных
class Item(BaseModel):
    name: str = Field(..., min_length=3)
    price: float = Field(..., gt=0) # Цена должна быть больше нуля
    is_offer: bool | None = None

# 2. FastAPI использует модель для валидации тела запроса
# и автоматической генерации документации OpenAPI
@app.post("/items/")
async def create_item(item: Item):
    # Если данные невалидны, FastAPI вернет ошибку 422
    return {"item_name": item.name, "item_price": item.price}

Таким образом, FastAPI — это, по сути, связующее звено, которое объединяет мощь асинхронного веба от Starlette с надежной валидацией данных и автодокументацией от Pydantic.