目次[表示]
FastAPIを用いたHello, World REST API作成の基本事項
環境構築の概要
Pythonのバージョン確認
まず、Pythonがインストールされているか確認しましょう。ターミナルやコマンドプロンプトで以下のコマンドを実行します。
python --version
Python 3.7以上が必要です。バージョンが古い場合は、最新のPythonをインストールしてください。
仮想環境の作成
プロジェクトごとに依存関係を管理するために、仮想環境を作成します。以下のコマンドで仮想環境を作成し、アクティブにします。
python -m venv env
source env/bin/activate # Windowsの場合は env\\Scripts\\activate
仮想環境を使用することで、他のプロジェクトと依存関係が衝突するのを防げます。
FastAPIのインストール
仮想環境がアクティブな状態で、FastAPIとASGIサーバーのUvicornをインストールします。
pip install fastapi uvicorn
fastapiはWebフレームワーク、uvicornは高速なASGIサーバーとして機能します。
シンプルなFastAPIアプリの作成
次に、簡単なFastAPIアプリを作成してみましょう。main.py
というファイルを作成し、以下のコードを入力します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
このコードでは、/
エンドポイントにアクセスすると、{"Hello": "World"}というJSONレスポンスが返されるように設定しています。
サーバーの起動
作成したアプリを実行するために、以下のコマンドを実行します。
uvicorn main:app --reload
--reload
オプションを付けることで、コードに変更があるたびに自動でサーバーが再起動します。ブラウザでhttp://127.0.0.1:8000
にアクセスすると、{"Hello": "World"}が表示されるはずです。
FastAPIのインストールと環境構築まとめ
以上の手順で、Python環境にFastAPIをインストールし、基本的な開発環境を構築することができました。仮想環境の利用や依存関係の管理を適切に行うことで、効率的にWebアプリケーションの開発を進められます。次のステップとして、ルーティングやデータベースとの連携など、FastAPIのさらなる機能を学んでみてください。
FastAPIでのエンドポイント作成とルーティング
エンドポイントの基本
FastAPIでは、エンドポイントを作成するためにデコレーターを使用します。例えば、以下のようにGETメソッドのエンドポイントを定義できます。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
この例では、/items/{item_id}
というURLパスにGETリクエストが来た際にread_item
関数が呼び出されます。item_id
はパスパラメータとして受け取られ、整数型として処理されます。
複数のHTTPメソッド対応
FastAPIでは、同じパスに対して異なるHTTPメソッドを設定することができます。例えば、POSTメソッドのエンドポイントを追加する場合は以下のようにします。
@app.post("/items/")
def create_item(item: dict):
return {"item_name": item.get("name")}
このように、/items/
パスに対してPOSTリクエストが送られるとcreate_item
関数が実行されます。リクエストボディとして送られたデータはitem
として受け取られます。
ルーティングの管理
ルーティングを効率的に管理するために、APIRouterを使用することが推奨されます。これにより、エンドポイントをモジュールごとに分けて整理できます。
from fastapi import APIRouter
router = APIRouter()
@router.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
app.include_router(router, prefix="/api")
この例では、APIRouter
を使ってユーザー関連のエンドポイントを定義し、それをアプリケーションに/api
のプレフィックスと共に組み込んでいます。これにより、URLが/api/users/{user_id}
となります。
パラメータのバリデーション
FastAPIでは、エンドポイントのパラメータに対して自動的にバリデーションが行われます。タイプヒントを使用することで、入力の検証が簡単に行えます。
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
この例では、Item
というモデルを定義し、POSTリクエストのボディとして受け取るデータを明確に指定しています。これにより、送信されるデータの形式が自動的に検証されます。
FastAPIでのエンドポイント作成とルーティングまとめ
FastAPIではデコレーターやAPIRouterを用いて簡単にエンドポイントを作成し、HTTPメソッドとパスを組み合わせて効率的にルーティングを管理できます。また、タイプヒントを活用することで自動的なバリデーションも実現できます。これにより、柔軟で拡張性の高いAPIを迅速に構築することが可能です。
FastAPIアプリケーションの作成
FastAPIとuvicornのインストール
まず、FastAPIとuvicornをインストールしましょう。以下のコマンドをターミナルで実行してください。
pip install fastapi uvicorn
このコマンドで、FastAPIとuvicornがインストールされます。
アプリケーションコードの作成
次に、FastAPIアプリケーションのコードを作成します。例えば、main.py
というファイルを作成し、以下の内容を記述します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
このコードでは、FastAPIのインスタンスを作成し、ルートエンドポイントを定義しています。read_root
関数が"/"
にアクセスした際に{"Hello": "World"}を返します。
FastAPIサーバーの起動方法
uvicornを使用したサーバーの起動
作成したアプリケーションを起動するには、uvicornを使用します。以下のコマンドをターミナルで実行してください。
uvicorn main:app --reload
main
はPythonファイル名(拡張子なし)、app
はFastAPIのインスタンス名を指します。--reload
オプションは、コードの変更を検知して自動的にサーバーを再起動します。開発時に便利です。
サーバーの確認
コマンドを実行すると、以下のようなメッセージが表示されます。
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28732] using statreload
INFO: Started server process [28734]
INFO: Waiting for application startup.
INFO: Application startup complete.
ブラウザでhttp://127.0.0.1:8000
にアクセスすると、{"Hello": "World"}が表示されます。また、http://127.0.0.1:8000/docs
にアクセスすると、自動生成されたSwagger UIのドキュメントも確認できます。
FastAPIサーバーの起動(uvicorn利用)まとめ
FastAPIサーバーをuvicornを利用して起動する方法について説明しました。uvicornは軽量で高性能なASGIサーバーとして、FastAPIとの相性が非常に良いです。適切なコマンドを使用することで、簡単に開発サーバーを立ち上げ、効率的にアプリケーションを開発することができます。
FastAPIサーバーの起動(uvicorn利用)まとめ
FastAPIサーバーをuvicornで起動する手順について詳しく説明しました。uvicornを利用することで、高速かつ柔軟なサーバー運用が可能となり、開発効率が向上します。ぜひ試してみてください。
FastAPIによる自動ドキュメント生成(Swagger UI, ReDoc)
FastAPIとは
FastAPIは、Pythonで書かれたモダンで高速なWebフレームワークです。その特徴の一つに、自動でAPIドキュメントを生成する機能があります。
Swagger UIの概要
Swagger UIは、APIのインタラクティブなドキュメントを提供するツールです。FastAPIと組み合わせることで、ブラウザ上でAPIのエンドポイントを確認し、直接テストすることができます。
ReDocの特徴
ReDocは、Swagger UIと同様にAPIドキュメントを生成しますが、より洗練されたデザインと詳細なドキュメント表示が特徴です。ユーザーに分かりやすいインターフェースを提供します。
Pythonコード事例
以下は、FastAPIを使用して簡単なAPIを作成し、自動ドキュメントを生成する例です。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(
title="サンプルAPI",
description="これはFastAPIによる自動ドキュメント生成の例です。",
version="1.0.0"
)
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/", response_model=Item)
async def create_item(item: Item):
return item
このコードでは、FastAPI
をインスタンス化し、Item
というデータモデルを定義しています。エンドポイント/items/
を作成し、POSTリクエストを受け取ると、送信されたデータをそのまま返します。FastAPIは、このコードから自動的にSwagger UIとReDocのドキュメントを生成します。
自動ドキュメントへのアクセス方法
アプリケーションを実行した後、以下のURLにアクセスすることでドキュメントを確認できます。
- Swagger UI:
http://localhost:8000/docs
- ReDoc:
http://localhost:8000/redoc
これらのインターフェースを使用して、APIの各エンドポイントを視覚的に確認し、実際にリクエストを送信してテストすることが可能です。
FastAPIによる自動ドキュメント生成(Swagger UI, ReDoc)まとめ
FastAPIを使用すると、コードを書く際に特別な設定をしなくても、自動的に詳細なAPIドキュメントを生成できます。Swagger UIとReDocの両方をサポートしており、開発者や利用者にとって非常に便利な機能です。これにより、APIの開発効率が向上し、ドキュメントの保守も容易になります。