FastAPIは、PythonでWeb APIを構築するための高性能なフレームワークです。FastAPIはAPIRouterを利用して、ルーディングを管理しています。本文では、FastAPIのAPIRouterを利用する方法を詳しく紹介します。
FastAPIのAPIRouterとは
FastAPIにおけるAPIRouterは、APIのルーティングを modular に定義するための機能です。
APIRouterを使うことで、以下のようなメリットが得られます。
- ルーティング定義をファイルやモジュール単位で分割できるため、コードの整理性が向上します。
- ある機能ごとに役割や責務を明確に分離でき、マイクロサービス的な設計が可能になります。
- Routerをインポートするだけで、まとめてルーティングを適用できます。
- ルーティングに共通のprefixやtagsを一括で設定できるため、DRY(Don't Repeat Yourself) な設計が実現できます。
- アプリケーションの成長に合わせて、Routerの追加/変更がしやすくなります。
このように、APIRouterを上手く利用することで、拡張性とメンテナンス性を高めたAPI設計が可能になり、FastAPIの大規模化に対応できると言えます。
APIRouterの効果的な運用事例
FastAPIでAPIを定義する場合、通常はmain.pyなど1つのファイルにすべてのルーティングを書くことになりがちです。しかし、アプリケーションが大きくなるにつれて1つのファイルは肥大化していきます。
そこで活用できるのが、APIRouterです。これはminiアプリケーションのようなもので、特定の機能に対応するルーティングをまとめたものです。
例えば、ユーザ管理のためのRouter、商品管理のRouterなどを用意できます。
そして、main.pyではこれらのRouterをインポートして使用するだけで、はっきりとした役割分担ができるようになります。
このようにAPIRouterを使うことで、アプリケーションの規模が大きくなっても、適切に責務を分割して管理できるようになりますね。
FastAPIのAPIRouterの使い方
それでは、FastAPIでAPIRouterを導入するには、どうしたらいいですか?次は、初心者でもわかるように、非常に詳細なAPIRouterの使い方を皆さんに紹介していきたいと思います。APIRouterを利用できる大前提としては、もちろん FastAPIがインストールされるところになります。 FastAPIをまだインストールしていない場合は、次のコマンドラインを利用してインストールしてください。
pip install fastapi
FastAPIでアプリを作成してAPIRouterを導入
それでは、簡単なFastAPIアプリを作成して、APIRouter導入してそれを組織したり、管理したりしましょう。IDEエディターでfastapi-router.pyというPythonファイルを作成して、次のようなコードをそこにコピーしてください。
from fastapi import FastAPI, APIRouter
app = FastAPI()
router = APIRouter()
@router.get("/")
async def hello():
return {"message": "Hello, FastAPI!"}
@router.get("/greet/{name}")
async def greet(name: str):
return {"message": f"Hello, {name}!"}
app.include_router(router)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)
上記のコードでは、名前がrouterになっているAPIRouterを作成しまして、@routerというデコレータでルーディング処理の関数を定義しています。これらの関数はアプリのルーディングの中に含まれています。
アプリの実行
FastAPIのアプリを実行して、APIRouterの機能をテストするために、uvicornのようなASGIサーバーを利用する必要があります。そこで、uvicornがパソコンにインストールされていることを確認してください。まだインストールしていない場合は、次のコマンドでインストールすることができます:
pip install uvicorn
そして、お使いのIDEエディターで、ターミナルを開き、fastapi-router.pyの保存先のディレクトリにCDして、次のコマンドでアプリを実行してください:
uvicorn fastapi-router:app --reload
ここで、HTTPリクエストツール(Curl、Apidogなど)を使って、http://localhost:8000/ か http://localhost:8000/greet/{name} にGETリクエストを送信して、適切なレスポンスを取得することができるようになりました。
Apidogでより便利にAPIをテストする
APIをテストしたりする必要がある場合、Apidogはこちらのおすすめのツールになります。Apidogは、APIの設計、仕様書生成、テスト自動化、APIモックなどの機能にも完璧に対応できるAPI管理ツールとして、FastAPIを利用して作成したAPIをテストする必要がある場合、特にお勧めしたいツールになります。
ApidogでFastAPIで作成したAPIをテスト
FastAPIで作成したAPIをより直感的で効率的にテストしたりするには、次のようにApidogを使用することがお勧めです。
ApidogのAPIデバッグモードでは、APIをテストすることが非常に便利になります。新しいAPIを作成して、「デバッグ」モードに切り替えると、アドレスバーでAPIのエンドポイントURLを入力して、必要なパラメータを記入することで、「送信」ボタンをクリックしたら、直ちにレスポンスを取得できます。
ここで、レスポンスにおいて、スターテスコードに異常があるかどうかを自動的に検証することもあるので、非常に直感で便利です。
まとめ
本文では、FastAPIのAPIRouterの使い方を紹介しました。APIRouterは、FastAPIのルーディングを組織したり、管理したりできる強力的なツールになります。APIRouterを作成して、@routerでルーディングの処理関数を定義することで、ルーディングをよりよく管理できるので、コードの整理性をかなり向上することができます。また、FastAPIで作成したAPIをApidogでテストすると、直感的な操作によって簡単にテストできるので、APIテストの効率もかなり向上できます。