Что такое FastAPI и каковы его ключевые особенности

«Что такое FastAPI и каковы его ключевые особенности» — вопрос из категории Библиотеки и модули, который задают на 22% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

FastAPI — это современный, высокопроизводительный веб-фреймворк для создания API на Python 3.7+. Его скорость сопоставима с NodeJS и Go, что достигается за счет двух ключевых компонентов:

  1. Starlette: Для всей веб-части. Обеспечивает поддержку асинхронности (ASGI).
  2. Pydantic: Для валидации и сериализации данных. Использует стандартные аннотации типов Python.

Ключевые особенности

  • Высокая производительность: Один из самых быстрых фреймворков для Python благодаря асинхронности и продуманной архитектуре.
  • Автоматическая документация: Генерирует интерактивную документацию API (Swagger UI и ReDoc) на основе кода и аннотаций типов.
  • Валидация данных: Встроенная валидация запросов и ответов с помощью моделей Pydantic, что уменьшает количество ошибок.
  • Простота и скорость разработки: Интуитивно понятный синтаксис и мощная система внедрения зависимостей (Dependency Injection) ускоряют написание кода.

Пример простого API

from fastapi import FastAPI
from pydantic import BaseModel

# Создаем модель данных с помощью Pydantic
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    return {"item_name": item.name, "price": item.price}

@app.get("/")
async def read_root():
    return {"Hello": "World"}

Для запуска используется ASGI-сервер, например, Uvicorn: uvicorn main:app --reload. Документация будет доступна по адресу /docs.