Перейти к содержанию

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
def create_app() -> FastAPI:
    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(endpoints.router)

    return app

Примеры использования

Создание приложения

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
)

Рекомендации по использованию

  1. Разработка
  2. Используйте фабричную функцию для создания приложения
  3. Подключайте роутеры через app.include_router()
  4. Настраивайте middleware и обработчики ошибок до подключения роутеров

  5. Конфигурация

  6. Используйте переменные окружения для настройки приложения
  7. Храните чувствительные данные в защищенном хранилище
  8. Настраивайте CORS для веб-интерфейсов

  9. Документирование

  10. Дополняйте документацию в docstrings
  11. Используйте tags для группировки эндпоинтов
  12. Добавляйте примеры запросов и ответов

Интеграция

Приложение интегрируется с:

  • 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