FastAPI — современный Python фреймворк для создания API. Автоматическая документация, типизация, высокая производительность.
Установка
pip install fastapi uvicorn
Первое приложение
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, World!"}
@app.get("/items/{item_id}")
def get_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
uvicorn main:app --reload
Запуск и документация
- Приложение:
http://127.0.0.1:8000 - Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
Path параметры
@app.get("/users/{user_id}")
def get_user(user_id: int): # автоматическая валидация типа
return {"user_id": user_id}
@app.get("/files/{file_path:path}") # путь с /
def get_file(file_path: str):
return {"path": file_path}
Query параметры
@app.get("/tasks/")
def list_tasks(
status: str | None = None,
limit: int = 20,
offset: int = 0,
):
return {"status": status, "limit": limit, "offset": offset}
GET /tasks/?status=todo&limit=10
POST с телом запроса
from pydantic import BaseModel
class TaskCreate(BaseModel):
title: str
status: str = "todo"
priority: int = 1
@app.post("/tasks/", status_code=201)
def create_task(task: TaskCreate):
return {"id": 1, **task.model_dump()}
HTTP методы
@app.get("/tasks/{id}") # получить
@app.post("/tasks/") # создать
@app.put("/tasks/{id}") # заменить
@app.patch("/tasks/{id}") # обновить частично
@app.delete("/tasks/{id}") # удалить
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!