Python の FastAPI フレームワークを使うと、高性能な Web API を簡単に実装できます。
FastAPI で Hello World
まずは、FastAPI で Hello World を返す Web API を実装してみます。
ここでは、プロジェクトのパッケージ管理に uv
を使います。
uv
を使うと、仮想環境 (venv) を意識せずに済むのでとても楽です(参考: uv の基本)。
uv add fastapi
するときに --extra standard
オプションを指定すると、API サーバーを立ち上げるための fastapi
コマンド(fastapi-cli
、uvicorn
パッケージ)なども一緒にインストールされます。
従来の pip
でインストールするなら、pip install fastapi[standard]
とします。
uv run
経由で fastapi
コマンドが実行できるか確認しておきます。
Web API 実装として、以下のようなファイルを作成します。
FastAPI サーバーを立ち上げるには、次のように fastapi dev
コマンド、あるいは fastapi run
コマンドを使用します。
開発時は前者のコマンドを使って、development モードで立ち上げます。
これで、下記のようなアドレスにアクセスすることで、API のレスポンスとして JSON データを取得できます。
http://127.0.0.1:8000/
http://127.0.0.1:8000/items/123
http://127.0.0.1:8000/items/123?q=hello
さらに、Web ブラウザで http://127.0.0.1:8000/docs
にアクセスすると、自動生成された API ドキュメント (Swagger UI) を参照できます。
FastAPI サーバーを development モードで立ち上げている場合は、ソースコードの更新時に自動的にリロードしてくれます。
Docker コンテナとして起動できるようにする
Web API サーバーをデプロイするときは、Docker コンテナとして起動できるようにしておくと便利です。
下記は uv
で管理されている FastAPI アプリケーションの Docker イメージを作成するための Dockerfile
です。
Dockerfile
を用意できたら、次のようにビルドして hello-api
イメージを作成します。
次のようにコンテナを起動すると、http://127.0.0.1:8080/
で Web API にアクセスできるようになります。
イメージサイズは 300MB 弱ですが、必要なくなったら削除しておきます。