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

Ответ

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.

Ответ 18+ 🔞

Вот, слушай, я тут на днях вляпался в один фреймворк, FastAPI называется. Ну, думаю, очередная питонячья хрень, где всё через жопу и асинхронность только на бумаге. Ан нет, ёпта, оказалось — огонь просто, в рот меня чих-пых!

Короче, это такая штука для создания API, но не та старая лоханка, а современная, для Python 3.7 и выше. Скорость у неё, блядь, такая, что NodeJS и Go нервно курят в сторонке. А всё почему? Потому что под капотом у него два здоровенных мужика работают:

  1. Starlette. Это типа его скелет, вся веб-механика. Отвечает за то, чтобы всё летало асинхронно, по новой моде (ASGI, если ты в курсе).
  2. Pydantic. А это, сука, его мозги. Всю твою хуйню проверяет, данные там всякие, чтобы ты кривые JSON'ы не слал. И всё на чистой магии аннотаций типов — красота, блядь!

Что в нём такого офигенного?

  • Летит как угорелый. Серьёзно, один из самых быстрых фреймворков на Питоне. Архитектура продумана, не то что некоторые...
  • Документация сама пишется. Вот это вообще пиздец как удобно. Написал функцию — и всё, готово. Фреймворк сам генерирует интерактивные странички (Swagger UI и ReDoc), где можно всё потыкать, попробовать. Хули там разбираться в постмане часами?
  • Данные не сломаются. Засунул не тот тип — получи ошибку сразу, красиво и понятно. Всё через те же модели Pydantic. Меньше косяков, меньше дебага, больше жизни.
  • Писать — одно удовольствие. Синтаксис простой, как палка. А система внедрения зависимостей (Dependency Injection) — это вообще отдельная песня, она такую гибкость даёт, что волосы дыбом.

Ну и куда же без примера, блядь?

Смотри, как всё просто и элегантно выглядит:

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"}

Запускаешь это дело через какой-нибудь Uvicorn (uvicorn main:app --reload), и всё, сиди и радуйся. Документация твоя сразу по адресу /docs торчит — заходи, кликай, тестируй. Красота, ёперный театр!