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. 参考講座

4. 目安期間

2週間

5. アプリ開発をスキップしたい場合

API仕様書の作成の「アプリ開発をスキップしたい場合」でサンプルAPIを選択した方は、この講座もスキップできます。

この段階では、サンプルAPIがローカル環境で正しく動作することを確認してください。以下の手順で進めてください。

5.1 必要なツール

  • Docker Desktop … コンテナの実行環境として必要です
  • Git … リポジトリのクローンに必要です

5.2 APIのみで進める場合

  1. リポジトリをクローンする
  2. README.mdの「ローカル環境での起動方法」に沿って、docker compose up -d でAPI + MySQLを起動する
  3. curl http://localhost:8080/health を実行し、{"status":"ok"} が返ることを確認する
  4. README.mdの「動作確認」に沿って、ユーザ登録・ログイン・投稿作成などが正常に動作することを確認する

5.3 フロントエンドも使う場合(任意)

  1. sns-camp-api と sns-camp-front を同じ親ディレクトリにクローンする
  2. sns-camp-front ディレクトリで docker compose up -d を実行する(API + MySQL + フロントエンドがまとめて起動します)
  3. ブラウザで http://localhost:3000 にアクセスし、ログイン画面が表示されることを確認する

ローカルでの動作確認ができたら、次のAWSの構築(手動)に進んでください。

ポートフォリオ制作のフィードバックはスタンダードプラン以上でご利用いただけます。

プランのアップグレード