/
tinypot
/
integr
Обзор
Документация
Войти
/
tinypot
/
integr
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task_management_api/main.py
70 строк
2 KB
Tim Polus
lab2
16 фев 2026, 19:22
16 фев 2026, 19:22
ec900ad
Код
Авторство
О чём код?
""" Task Management API A comprehensive REST API for task management system with versioning, authentication, rate limiting, and idempotency. """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.trustedhost import TrustedHostMiddleware from app.api.v1.api import router as api_v1_router from app.api.v2.api import router as api_v2_router from app.core.config import settings from app.core.database import create_tables from app.utils.rate_limiter import rate_limit_middleware app = FastAPI( title="Task Management API", description="REST API для управления задачами с JWT аутентификацией, rate limiting и версионированием", version="2.1.0", openapi_url=f"{settings.API_V1_STR}/openapi.json", docs_url="/docs", redoc_url="/redoc" ) app.add_middleware( CORSMiddleware, allow_origins=["*"], # In production, specify allowed origins allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.add_middleware( TrustedHostMiddleware, allowed_hosts=["*"] # In production, specify allowed hosts ) @app.middleware("http") async def add_rate_limiting(request, call_next): return await rate_limit_middleware(request, call_next) app.include_router(api_v1_router, prefix=settings.API_V1_STR) app.include_router(api_v2_router, prefix=settings.API_V2_STR) @app.on_event("startup") async def startup_event(): await create_tables() @app.get("/") async def root(): return { "message": "Task Management API", "version": "2.1.0", "features": [ "JWT Authentication", "Rate Limiting", "API Versioning (v1, v2)", "Idempotent Operations", "Pagination", "Field Selection", "Internal APIs" ] } @app.get("/health") async def health_check(): return {"status": "healthy"}