「入門」FastAPIとは、その使い方をご紹介
FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークです。FastAPIはオープンソースのプロジェクトとして、多くの開発者に利用されています。本文では、FastAPIについて詳しく皆さんに紹介した上、その使い方をも皆さんに紹介していきたいと思います。
FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークです。FastAPIはオープンソースのプロジェクトとして、多くの開発者に利用されています。本文では、FastAPIについて詳しく皆さんに紹介した上、その使い方をも皆さんに紹介していきたいと思います。
FastAPIとは
FastAPIは、高性能なAPI開発を実現するためのPythonフレームワークで、StarletteとPydanticライブラリーに基づいています。REST API開発における新しいスタンダードとして、Pythonコミュニティで急速に注目を集めているフレームワークです。 機械学習プロジェクト等での利用に適している点が大きな特徴です。
公式サイト:https://fastapi.tiangolo.com/ja/
FastAPIの特徴
FastAPIの特徴といえば、主に次のようなものがあります:
- シンプルでintuitiveな設計:ルーティング、リクエスト、レスポンスなどの機能がよく構造化されている
- 超高速:他のPythonフレームワークよりもはるかに高速に動作する
- 自動生成されるインタラクティブドキュメント:OpenAPI標準に準拠したドキュメントが自動生成される
- データ検証:Pydanticを利用したデータ検証機能
- シンプルなデプロイ: ASGIサーバーとの親和性が高い
- 機械学習対応:TensorFlowやPyTorchとのインテグレーションが容易
FastAPIの動作環境
それでは、FastAPIを利用するために、動作要件は何ですか?次はFastAPIの実行に不可欠な要件を紹介するので、次の内容を参照して、FastAPIの動作環境を整えましょう。
Python 3.7+
FastAPIはPython 3.7以上が必要です。型ヒント機能等を利用するため、3.7以上のバージョンが推奨されます。
ASGIサーバー
FastAPIはASGI(Asynchronous Server Gateway Interface)に準拠したサーバー上で動作します。代表的なのはUvicornですが、Hypercorn等のASGIサーバーも利用できます。
pip install uvicorn
Pydantic
リクエストとレスポンスのデータ検証にPydanticライブラリが利用されます。FastAPIはPydanticに依存しているため、インストールが必要です。
pip install pydantic
Starlette
FastAPIはStarletteと呼ばれるWSGI/ASGIフレームワークの上に構築されています。直接は必要ありませんが、内部的にはStarletteに依存関係があります。
(オプション) SQLAlchemy, Keras, PyTorch等
機械学習や大規模なデータ処理を行う場合、これらのライブラリとの連携が可能です。アプリケーション次第で必要になる場合があります。
- SQLAlchemy (オプション)
pip install sqlalchemy
- Keras (オプション)
pip install keras
- PyTorch (オプション)
pip install torch
FastAPIの使い方:インストールして利用する
それでは、次は基本的なFastAPIの使い方を皆さんに紹介します。次のステップを参照して、FastAPIで簡単なWebアプリを構築しましょう。
FastAPIのインストール
次のコマンドラインを使って、FastAPIをインストールすることができます:
pip install fastapi
そして、uvicornをインストールします。
FastAPIのアプリを作成
そして、Pythonファイルを新しく作成して、たとえば、demo.py。次のコードをそこにコピーします。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
上記のコードでは、appと名付けられたFastAPIの使用例を作成して、ルートルーディングを定義し、JSONフォーマットのレスポンスも定義しました。
FastAPIアプリを実装
次のようなコマンドでFastAPIアプリを実装することができます。
uvicorn main:app --reload
ここで、FastAPIはローカルでサーバーを立ち上げ、デフォルトポート(8,000)を監視できます。http://127.0.0.1:8000
をブラウザで開くと、 {"Hello": "World"}
のレスポンスを見ることができます。
より多くのルーディングと機能を追加
上記のコードに基づき、より多くのルーディングと機能を追加することができます。ここで自分のニーズに従って追加することができます。
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
たとえば:上記のコードに read_item
の新しいルーディングを追加し、 item_id
というパラメータと q
というオプションのプラメータを受けとり、JSON形式のレスポンスを返します。
サンプル:FastAPIの使用例
次は、FastAPIの実の使用例を皆さんに紹介します。次は、直接に実装可能なコードで、IDEエディターにコピーして実行してください。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": f"APIのid:{item_id}"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
そして、ブラウザで http://localhost:8000/
にアクセスすると、 {"Hello": "World"}
というレスポンスのコンテンツを見れるようになります。
また、 http://localhost:8000/items/42?q=somequery
のようなURLにアクセスして、パラメータ付きのレスポンスを確認することができます。
APIドキュメントの確認
また、FastAPIはSwaggerのドキュメントの自動生成をサポートしています。FastAPIが自動生成したAPIドキュメントを確認するには、http://localhost:8000/docs
にアクセスしてください。
Apidogでより便利にAPIをテストする
APIをテストしたりする必要がある場合、Apidogはこちらのおすすめのツールになります。Apidogは、APIの設計、仕様書生成、テスト自動化、APIモックなどの機能にも完璧に対応できるAPI管理ツールとして、FastAPIを利用して作成したAPIをテストする必要がある場合、特にお勧めしたいツールになります。
ApidogでFastAPIで作成したAPIをテスト
FastAPIで作成したAPIをより直感的で効率的にテストしたりするには、次のようにApidogを使用することがお勧めです。
ApidogのAPIデバッグモードでは、APIをテストすることが非常に便利になります。新しいAPIを作成して、「デバッグ」モードに切り替えると、アドレスバーでAPIのエンドポイントURLを入力して、必要なパラメータを記入することで、「送信」ボタンをクリックしたら、直ちにレスポンスを取得できます。
ここで、レスポンスにおいて、スターテスコードに異常があるかどうかを自動的に検証することもあるので、非常に直感で便利です。