python でバックエンド API を作る際のボイラープレート
- VSCode で開発する
- Mac 上で開発する
- python のフレームワークに
FastAPI
を使う - DB は MySQL を利用する
- リポジトリをクローンする。
git clone https://github.com/onigiri-w2/bp_api
- Docker for Mac をインストールしておく。
- brew でインストールするもよし、ダウンロードしてからインストールするもよし。
- direnv もインストールしておく。
- brew でインストールかな。
- zshrc だか bashrc だかに、何かしらコード記載しておかないといけないっぽい。詳しくは google で。
poetry
をインストールする。(以下リンク参考)
make
で初期構築を実施する。
make initialize_bp
- devcontainer 立ち上げる。
- fastapi 起動する。
- 必要なコードを追加したり修正したりする。
- ある程度動作確認(テスト)する。
- local に戻って、docker-compose.dev.yml から Docker 環境立てて、動作確認してみたりする。
- 本番環境にこのコード持っていって、docker-compose.prod.yml から環境立てて、動作確認したりする。
これ実行したら、dist/openapi.json
としてファイルが生成される。
説明するのサボってるだけ。。。
- コーディングの前に以下のこと決めておく a. どういう機能が欲しい?機能一覧を決める。 b. それらの機能を API の定義に落とし込む。(名前、リクエスト情報、レスポンス情報、可能性のあるエラー内容(これは最悪後ででいい)) c. モデル定義。DDD とかそういうの参考に、どういうモデルが必要なのか、それらの関係などを定義しておく。あとモデルごとの値の制約とかも。 d. 永続化に使うシステム決める。RDB?NoSQL?DynamoDB?
- コーディングに入る
- まずは api のコーディングから、中身は記載せずともスキーマやら必要な api 関数を全て作り切る。
- 次に model の実装を行なっていく。「1.」で作ったモデル通りに作っていこう。entity と valueobject の違いは意識して。
- 次に 永続化 の実装を行なっていく。(まだ、rdb バージョンしか例示がないけど...w)
- 最後に API 関数の実装を、機能要件を満たすように埋めていく。(API の実装から先にやった方がいいかな?こういう風に作ってっていう骨子を先に作るために)
poetry run python3 script/generate_openapi.py