Skip to content

kuwacom/FastAPI-Template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Template

FastAPI を使った RESTful API テンプレートです

技術スタック

  • Python 3.12+
  • FastAPI
  • Uvicorn
  • Pydantic Settings
  • Rich
  • uv
  • Ruff
  • Pytest

セットアップ

uv sync
cp .env.example .env

開発サーバー

uv run task dev

reload を有効化する場合は .envRELOAD=true を設定してください

テスト

uv run task test

Lint

uv run task lint

スクリプト

uv 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 sync

構成

src/
├─ app.py
├─ main.py
├─ configs/
├─ lib/
├─ middleware/
├─ routes/
├─ schemas/
└─ services/

src/app.py

FastAPI アプリの構成だけを担当します middleware, router, exception handler を組み立て、サーバー起動は行いません

src/main.py

サーバー起動だけを担当します host, port, reload は環境変数から読み込みます

src/routes/

URL 構造に合わせたルーティング層です route 固有の request / response 処理を置きます

src/lib/

複数 route で使う共通ロジックを置きます API 共通エラーや再利用する変換処理を定義しています

src/middleware/

request / response ログや例外ハンドリングなど、横断的な処理を置きます

src/configs/

環境変数など、運用で変わる値を型付きで集約します

src/services/logger.py

アプリケーション全体で共有する logger を定義します ログレベルは LOG_LEVEL で制御でき、Rich によってログレベルごとの色分けと traceback 表示を行います

src/middleware/logger.py

request / response ログを一元化します 既定の LOG_LEVEL=INFO でも疎通確認できるよう、HTTP アクセスログは info レベルで出力します アクセスログには接続ホスト名とリクエスト元 IP も含めます リクエスト元 IP は X-Forwarded-For, X-Real-IP, socket client の順で解決します

API

GET /v1/hello/

{
  "name": "hello",
  "hellos": ["h", "e", "l", "l", "o"]
}

About

FastAPIを使ったrestfullなAPIの実装例

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages