Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

タスク管理API (FastAPI + JWT + SQLAlchemy)

プロジェクト概要

FastAPIを使った認証付きタスク管理APIです。 JWT認証、CRUD、例外処理、pytestによるテスト、Dockerによる環境構築を備えています。

Swagger UI

Swagger UI

Authorizeボタン

Authorize

認証後のタスク一覧

Task List

使用技術

  • FastAPI
  • Python
  • SQLAlchemy
  • JWT (python-jose)
  • Poetry(依存管理)
  • Docker/ Docker Compose
  • PostgreSQL(本番環境)
  • pytest
  • coverage
  • SQLite(テスト環境)
    ※ テストでは高速化のため SQLite(:memory:)を使用しています。
    ※ 本番環境では PostgreSQL を使用しています。

機能一覧

  • ユーザ登録(signup)
  • ログイン(JWT発行)
  • タスクのCRUD
  • 自分のタスクのみ操作可能
  • 認証エラー(Invalid token / Expired token / User not found)

ディレクトリ構成

app/  
  ├── main.py       # FastAPI アプリケーションのエントリポイント  
  ├── routers/      # 認証・タスクのルーター  
  ├── models/       # SQLAlchemy モデル  
  ├── schemas/      # Pydantic スキーマ  
  ├── core/         # 設定・セキュリティ(JWTなど)  
  ├── db/           # DB セッション・初期化  
tests/  
  ├── test_auth.py  
  ├── test_task.py  
  ├── test_security.py  
Dockerfile  
docker-compose.yml  
pyproject.toml  
README.md

APIエンドポイント一覧

POST /auth/signup
POST /auth/login
GET /tasks/
POST /tasks/
PUT /tasks/{task_id}
DELETE /tasks/{task_id}

環境変数

ルートディレクトリに .env ファイルを作成し、以下の環境変数を設定します。

DATABASE_URL=postgresql://<USER>:<PASSWORD>@<HOST>:5432/<DB_NAME>
JWT_SECRET=<任意の安全な文字列>
JWT_ALGORITHM=HS256
  • DATABASE_URL は PostgreSQL の接続情報です
    (docker-compose の設定に合わせて <USER>, <PASSWORD>, <HOST>, <DB_NAME> を変更してください)
  • JWT_SECRET は JWT の署名に使用する秘密鍵です
    (十分に長いランダムな文字列を設定してください)
  • JWT_ALGORITHM は署名アルゴリズムです

テストについて

pytestによるテストを実装しています。

  • 認証の正常系、異常系
  • タスクCRUDの正常系、異常系
    • 404(存在しないタスク)
    • 403(他人のタスク)
  • 例外処理を全て網羅
  • coverageによるカバレッジ計測

Coverageの確認方法

CoverageのHTMLレポートは以下から生成できます。
poetry run coverage html
生成された 'htmlcov/index.html' をブラウザで開くと、各ファイルのカバレッジを視覚的に確認できます。
※coverageは100% ではありませんが、テスト価値の低い箇所は意図的に除外しています。必要なロジックは十分にカバーされています。

Coverage計測結果

Coverage

Dockerでの起動方法

docker compose up --build

今後の拡張予定

  • Alembic によるマイグレーション
  • Refresh Token の導入
  • Nginx + Gunicorn による本番構成

License

This project is licensed under the MIT License.

About

FastAPIによるJWT認証付きタスク管理API(Docker・pytest対応)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages