API構築(テスト・コンテナ含む)
API仕様書の作成で設計したAPI仕様書をもとに、FastAPIを使用してローカル環境でAPIを実装します。データベースにはMySQLを使用し、APIとデータベースの両方をDockerコンテナ上で動作させます。テストコードを書いて品質を担保し、Docker Composeで一括起動できる状態まで仕上げます。
- FastAPIを使ったCRUD APIの実装
- Pytestによる自動テストと静的解析の導入
- Docker / Docker Composeによるアプリケーション全体のコンテナ化
1. 必須要件
以下の要件をすべて満たしてください。
1.1 アプリケーション
- FastAPIを使用して、API仕様書の作成で作成したAPI仕様書に沿ったCRUD操作が可能なAPIを作成すること
- データベースにはMySQLを使用すること
- 異常系のハンドリングを実装すること
- バリデーションエラー(不正なリクエストボディ、型の不一致など)
- 存在しないリソースへのアクセス(404レスポンス)
- データベース接続エラーなどのサーバエラー(500レスポンス)
1.2 テスト・静的解析
- Pytestを使用したテストコードを作成すること
- 各エンドポイントの正常系テスト(CRUD操作が正しく動作すること)
- 各エンドポイントの異常系テスト(バリデーションエラー、存在しないリソースへのアクセスなど)
- 静的解析ツール(Flake8、Black、mypy など)を導入し、コードの品質チェックができる状態にすること
1.3 コンテナ
- APIアプリケーション用のDockerfileを作成すること
- Docker Composeを使用して、APIコンテナとMySQLコンテナを一括で起動できるようにすること
docker compose upだけでアプリケーション全体が起動し、APIにアクセスできる状態にすること
1.4 ドキュメント
- README.mdに以下を記載すること
- APIの概要
- エンドポイント一覧(メソッド・パス・リクエスト/レスポンス例)
- ローカル環境での起動方法(
docker compose upで起動できること) - テストの実行方法
- 静的解析の実行方法
2. 提出物
- GitHubリポジトリのURL
- mainブランチに最新のコードがマージされている状態にすること
3. 参考講座
- FastAPI入門
- SQLModel入門
- PythonでREST APIを作ろう
- Pythonでデータベースを操作しよう
- テストの考え方
- Pythonで静的解析をしよう
- Pythonで自動テストをしよう
- Dockerfileの基本文法
- マルチステージビルド
- Dockerネットワーク
- Dockerストレージ
- Docker Compose
- Docker Composeで3層アーキテクチャを構築しよう
4. 目安期間
2週間
5. アプリ開発をスキップしたい場合
API仕様書の作成の「アプリ開発をスキップしたい場合」でサンプルAPIを選択した方は、この講座もスキップできます。
この段階では、サンプルAPIがローカル環境で正しく動作することを確認してください。以下の手順で進めてください。
5.1 必要なツール
- Docker Desktop … コンテナの実行環境として必要です
- Git … リポジトリのクローンに必要です
5.2 APIのみで進める場合
- リポジトリをクローンする
- README.mdの「ローカル環境での起動方法」に沿って、
docker compose up -dでAPI + MySQLを起動する curl http://localhost:8080/healthを実行し、{"status":"ok"}が返ることを確認する- README.mdの「動作確認」に沿って、ユーザ登録・ログイン・投稿作成などが正常に動作することを確認する
5.3 フロントエンドも使う場合(任意)
- sns-camp-api と sns-camp-front を同じ親ディレクトリにクローンする
- sns-camp-front ディレクトリで
docker compose up -dを実行する(API + MySQL + フロントエンドがまとめて起動します) - ブラウザで
http://localhost:3000にアクセスし、ログイン画面が表示されることを確認する
ローカルでの動作確認ができたら、次のAWSの構築(手動)に進んでください。