応用課題
1. 課題の概要
この章で学んだ内容をもとに、ホテルの予約管理REST API を作成します。
ホテルの予約情報を登録・取得・更新・削除できるAPIを、Python(FastAPI + SQLModel)で実装します。
2. 事前準備
Gitの基礎知識を習得していることを前提とします。自信のない方は先に以下の講座を実施してください。
この応用課題に取り組む前に、以下のツールが準備できていることを確認してください。
3. 必須要件
3.1 REST API
- FastAPIを使用してREST APIを作成すること
- 以下の5つのエンドポイントを実装すること
- 一覧取得:
GET /reservations— 予約の一覧を取得 - 詳細取得:
GET /reservations/{id}— 指定したIDの予約を取得 - 作成:
POST /reservations— 新しい予約を作成 - 更新:
PUT /reservations/{id}— 指定したIDの予約を更新 - 削除:
DELETE /reservations/{id}— 指定したIDの予約を削除
- 一覧取得:
- リクエスト・レスポンスにPydanticモデル(またはSQLModel)を使用すること
- 不正なリクエスト(存在しないIDへのアクセス等)に対して、適切なHTTPステータスコードを返すこと
3.2 データベース
- SQLModelを使用してデータベースにデータを永続化すること
- 予約テーブル(
reservations)には以下の項目を含むこと
| カラム名 | 型 | 説明 |
|---|---|---|
id |
INTEGER | 主キー(自動採番) |
guest_name |
VARCHAR | 予約者名 |
check_in |
DATETIME | チェックイン日時 |
check_out |
DATETIME | チェックアウト日時 |
num_guests |
INTEGER | 宿泊人数 |
status |
VARCHAR | 予約ステータス(pending / confirmed / cancelled) |
created_at |
DATETIME | 作成日時 |
updated_at |
DATETIME | 更新日時 |
3.3 静的解析
- flake8とmypyの設定ファイルを用意し、静的解析が通る状態にすること
3.4 自動テスト
- pytestを使用してAPIの自動テストを作成すること
- 最低限、予約の作成と取得のテストが含まれていること
4. 提出形式
以下の2項目をまとめて提出してください。
4.1 GitHubリポジトリ
実装したコードをアップロードしたGitHubリポジトリのURLを記載してください。
4.2 まとめ
実装中に苦労したこと、工夫したこと、学んだことを記載してください。