FastAPI Приложение¶
Модуль fastapi_app предоставляет фабрику для создания и настройки экземпляра FastAPI приложения. Это основная точка входа веб-сервиса.
Особенности¶
- Фабричный метод для создания приложения
- Централизованная конфигурация
- Поддержка жизненного цикла приложения
- Автоматическая документация API
- Модульная структура
Документация API¶
create_app¶
Фабричная функция для создания и настройки экземпляра FastAPI.
Source code in src/entrypoints/fastapi_app.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
Примеры использования¶
Создание приложения¶
from src.entrypoints.fastapi_app import create_app
# Создание экземпляра приложения
app = create_app()
# Запуск с помощью uvicorn (если файл запущен напрямую)
if __name__ == "__main__":
import uvicorn
uvicorn.run("src.entrypoints.fastapi_app:app", host="0.0.0.0", port=8000, reload=True)
Конфигурация приложения¶
При создании приложения можно передать дополнительные параметры:
app = FastAPI(
title="eebook",
description="API учета инвестиций eebook",
version="0.1.0",
docs_url="/api/docs",
redoc_url="/api/redoc",
openapi_url="/api/openapi.json",
lifespan=lifespan
)
Рекомендации по использованию¶
- Разработка
- Используйте фабричную функцию для создания приложения
- Подключайте роутеры через
app.include_router() -
Настраивайте middleware и обработчики ошибок до подключения роутеров
-
Конфигурация
- Используйте переменные окружения для настройки приложения
- Храните чувствительные данные в защищенном хранилище
-
Настраивайте CORS для веб-интерфейсов
-
Документирование
- Дополняйте документацию в docstrings
- Используйте
tagsдля группировки эндпоинтов - Добавляйте примеры запросов и ответов
Интеграция¶
Приложение интегрируется с:
- ASGI-серверами (uvicorn, hypercorn)
- Системами мониторинга
- Логированием
- Метриками
Ограничения¶
- Требуется Python 3.8+
- Зависит от FastAPI и других указанных в requirements.txt пакетов
- Предполагает использование ASGI-сервера для продакшн-развертывания
Дополнительные возможности¶
Кастомные обработчики ошибок¶
from fastapi import Request
from fastapi.responses import JSONResponse
@app.exception_handler(ValueError)
async def value_error_handler(request: Request, exc: ValueError):
return JSONResponse(
status_code=400,
content={"message": str(exc)},
)
Пользовательские middleware¶
from fastapi import Request
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
# Код, выполняемый до обработки запроса
response = await call_next(request)
# Код, выполняемый после обработки запроса
return response