Python

FastAPI

FastAPIを用いたHello, World REST API作成の基本事項

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の開発効率が向上し、ドキュメントの保守も容易になります。

-FastAPI
-, , ,

S