Ответ
FastAPI — это современный, высокопроизводительный веб-фреймворк для создания API на Python 3.7+. Его скорость сопоставима с NodeJS и Go, что достигается за счет двух ключевых компонентов:
- Starlette: Для всей веб-части. Обеспечивает поддержку асинхронности (ASGI).
- 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 нервно курят в сторонке. А всё почему? Потому что под капотом у него два здоровенных мужика работают:
- Starlette. Это типа его скелет, вся веб-механика. Отвечает за то, чтобы всё летало асинхронно, по новой моде (ASGI, если ты в курсе).
- 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 торчит — заходи, кликай, тестируй. Красота, ёперный театр!