FastAPI を使った RESTful API テンプレートです
- Python 3.12+
- FastAPI
- Uvicorn
- Pydantic Settings
- Rich
- uv
- Ruff
- Pytest
uv sync
cp .env.example .envuv run task devreload を有効化する場合は .env の RELOAD=true を設定してください
uv run task testuv run task lintuv run task dev
uv run task start
uv run task test
uv run task lint
uv run task format
uv run task fix
uv run task check
uv run task lock
uv run task syncsrc/
├─ app.py
├─ main.py
├─ configs/
├─ lib/
├─ middleware/
├─ routes/
├─ schemas/
└─ services/
FastAPI アプリの構成だけを担当します middleware, router, exception handler を組み立て、サーバー起動は行いません
サーバー起動だけを担当します host, port, reload は環境変数から読み込みます
URL 構造に合わせたルーティング層です route 固有の request / response 処理を置きます
複数 route で使う共通ロジックを置きます API 共通エラーや再利用する変換処理を定義しています
request / response ログや例外ハンドリングなど、横断的な処理を置きます
環境変数など、運用で変わる値を型付きで集約します
アプリケーション全体で共有する logger を定義します
ログレベルは LOG_LEVEL で制御でき、Rich によってログレベルごとの色分けと traceback 表示を行います
request / response ログを一元化します
既定の LOG_LEVEL=INFO でも疎通確認できるよう、HTTP アクセスログは info レベルで出力します
アクセスログには接続ホスト名とリクエスト元 IP も含めます
リクエスト元 IP は X-Forwarded-For, X-Real-IP, socket client の順で解決します
{
"name": "hello",
"hellos": ["h", "e", "l", "l", "o"]
}