Python で REST API を作る: FastAPI で TODO API を実装する

FastAPI と pydantic で、TODO を作成・一覧・完了・削除する REST API を実装します。入力検証(422)、存在しない id の 404、204 の使い分け、自動生成される API ドキュメント、TestClient によるテストまで、Python バックエンド開発の基本を一通り体験します。

中級約 60 分Azure 実環境

ラボ概要

このラボでは、社内ツールのバックエンドを任された Python エンジニアの想定で、FastAPI を使って TODO 管理の REST API を実装します。

ブラウザで開く IDE に、app.py の骨組み(FastAPI アプリ、pydantic モデル、/health)が用意されています。TODO 1〜4 のエンドポイントを実装し、uvicorn で起動して curl で叩き、最後に自動テストと判定で「正しい HTTP ステータスと JSON を返しているか」を確認します。

学習目標:

  • FastAPI のルーティング(@app.get / @app.post / @app.patch / @app.delete)とパス パラメータ
  • pydantic モデルによる入力検証(必須・文字数)と 422 の自動応答
  • 201 / 204 / 404 の使い分けと HTTPException
  • uvicorn での起動、/docs(Swagger UI)での確認、TestClient によるテスト
前提知識:
  • Python の関数・辞書・リストの基本
  • HTTP のメソッドとステータスコードの概要(GET / POST、200 / 404)
完了条件:
  • app.py に 4 つのエンドポイントが実装され、テスト(作成・一覧・検証・完了・削除)が全件合格すること
  • サーバーを 127.0.0.1:8000 で起動したまま判定を実行し、/health と /todos と /docs が応答すること

ラボの構成

  1. 1ブラウザ IDE を開いて骨組みを読む
  2. 2TODO 1: 一覧(GET /todos)
  3. 3TODO 2: 作成(POST /todos → 201)
  4. 4TODO 3: 完了(PATCH /todos/{id}/done)と 404
  5. 5TODO 4: 削除(DELETE /todos/{id} → 204)
  6. 6テストと API ドキュメントで確認する
  7. 7判定を実行する
  8. 8発展(任意)と考察

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

手順のプレビュー(最初のステップ)

1. ブラウザ IDE を開いて骨組みを読む

  • ラボ画面の ブラウザ IDE を開く をクリックし、表示されているパスワードでサインインする
  • app.py を開き、TodoIn(入力)と Todo(出力)の 2 つのモデル、TODOS リスト、/health があることを確認する
  • Terminal → New Terminal でターミナルを開き、まず現状のまま起動してみる
uvicorn app:app --host 127.0.0.1 --port 8000 --reload
  • 別のターミナル(+ で追加)から /health を叩く
curl -s http://127.0.0.1:8000/health

> 注: --reload を付けると app.py を保存するたびに自動で再起動します。このターミナルは起動したままにして、作業は 2 つ目のターミナルで行います。判定でもサーバーが動いていることを前提にします。

残り 7 セクションの手順は、ラボを開始すると画面内に表示されます

構成図

構成図

参考リソース