FastAPI — один из самых быстрых Python-фреймворков для построения API. Автодокументация, типизация, async из коробки.
Поехали.
📦 Установка
pip install fastapi uvicorn
🏗 Минимальный сервер
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, World!"}
Запуск:
uvicorn main:app --reload
Откройте
http://127.0.0.1:8000 — API уже отвечает.Бонус:
http://127.0.0.1:8000/docs — интерактивная Swagger-документация, сгенерирована автоматически. 📐 Pydantic-модели — валидация входных данных
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: str
@app.post("/users")
def create_user(user: User):
return {"created": user.name}
FastAPI сам проверит типы и вернёт понятную ошибку, если придут неверные данные. Никакого ручного
if not isinstance(...).🔍 Path & Query параметры
# /items/42
@app.get("/items/{item_id}")
def get_item(item_id: int, q: str = None):
return {"id": item_id, "query": q}
item_id — из URL, q — из query string (`?q=test`). Всё типизировано.⚡️ Async endpoint — когда нужен I/O
import asyncio
@app.get("/slow")
async def slow_endpoint():
await asyncio.sleep(1) # не блокирует сервер
return {"status": "done"}
Используйте
async def когда делаете запросы к БД или внешним API — сервер продолжает обрабатывать другие запросы пока ждёт.🗂 Структура проекта (когда вырастет)
project/
├── main.py
├── routers/
│ ├── users.py
│ └── items.py
└── models/
└── schemas.py
Роутеры подключаются так:
from routers import users
app.include_router(users.router, prefix="/users")
✅ Итого за 5 минут:
—
GET / POST / PUT / DELETE эндпоинты— Валидация через Pydantic
— Автодокументация на
/docs— Async поддержка
— Масштабируемая структура
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст