このプロジェクトは、FastAPI、SQLAlchemy、Alembic、MySQLを使用した、厳密なドメイン駆動開発(DDD)パターンに従ったRESTful APIのサンプル実装です。
backend/
├── .python-version # Python 3.13を指定
├── app/ # アプリケーションコード
│ ├── main.py # アプリケーションエントリーポイント
│ ├── domain/ # ドメイン層(エンティティ、バリューオブジェクト、リポジトリインターフェース)
│ ├── application/ # アプリケーション層(ユースケース、DTOs)
│ ├── infrastructure/ # インフラストラクチャ層(DBモデル、リポジトリ実装)
│ └── interfaces/ # インターフェース層(API、スキーマ)
├── alembic/ # マイグレーション設定
└── requirements.txt # 依存関係
- 依存関係のインストール:
uv pip install -r backend/requirements.txt
- データベースの作成:
CREATE DATABASE fastapi_db;
- 環境変数の設定:
# .envファイルを作成
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_SERVER=localhost
MYSQL_PORT=3306
MYSQL_DB=fastapi_db
- マイグレーションの実行:
cd backend
alembic revision --autogenerate -m "Initial migration"
alembic upgrade head
cd backend
uv run fastapi run app/main.py
サーバーは http://localhost:8000
で実行されます。
APIドキュメント: http://localhost:8000/docs
GET /api/v1/users
- すべてのユーザーを取得POST /api/v1/users
- 新しいユーザーを作成GET /api/v1/users/{user_id}
- 特定のユーザーを取得PUT /api/v1/users/{user_id}
- ユーザー情報を更新DELETE /api/v1/users/{user_id}
- ユーザーを削除
GET /api/v1/attendances
- 勤怠情報を取得 (クエリパラメータで絞り込み可能)POST /api/v1/attendances
- 新しい勤怠情報を作成GET /api/v1/attendances/{attendance_id}
- 特定の勤怠情報を取得PUT /api/v1/attendances/{attendance_id}
- 勤怠情報を更新DELETE /api/v1/attendances/{attendance_id}
- 勤怠情報を削除