Fast APIとは?
FastAPI
は、Python 3.6+ に基づいた、モダンで、高速(高パフォーマンス)なWebフレームワークです。
RESTful APIの構築と提供を目的として設計されており、以下のような特徴があります:
- 高速:
FastAPI
は非常に高速であり、NodeJS や Go と同等のパフォーマンスを持っていると言われています。これは、非同期処理をサポートしているためです。 -
高生産性: FastAPIはデータ型のアノテーションを使用して機能を自動的に提供するため、少ないコードで多くの機能を迅速に提供できます。
-
Pydanticとの統合: リクエストとレスポンスのデータモデルにPydanticを使用しており、データのバリデーション、シリアライゼーション、ドキュメンテーション生成などが自動的に行われます。
-
自動ドキュメント生成:
FastAPI
はSwagger UIとReDocを組み込んでおり、APIのドキュメンテーションとインタラクティブなテストを自動的に提供します。 -
依存性注入: 依存性注入システムを持っており、再利用性とテストの容易さを高めています。
-
セキュリティと認証: FastAPIはセキュリティと認証に関する多くの組み込み機能を持っており、安全なAPIを簡単に作成できます。
-
非同期処理: 非同期なAPIエンドポイントを作成するためのサポートが組み込まれています。
これらの特徴と、その他の多くの利点のおかげで、FastAPI
はPythonのWebフレームワークとして非常に人気が高まっています。
どのように使うのか?
FastAPIはPythonでのWeb APIの開発を簡単に、かつ高速に行うことができるフレームワークです。以下に、FastAPIを使って簡単なAPIを作成する基本的な手順を示します。
- FastAPIと依存関係のインストール:
pip install fastapi[all] uvicorn
- 簡単なAPIの作成:
main.py
というファイルを作成し、以下の内容を記述します。
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, query_param: str = None):
return {"item_id": item_id, "query_param": query_param}
ここでは、ルートURLと/items/{item_id}
という2つのエンドポイントを持つAPIを作成しています。
- APIの起動:
ターミナルで以下のコマンドを実行してAPIを起動します。
uvicorn main:app --reload
このコマンドにより、FastAPIはデフォルトでhttp://127.0.0.1:8000
で動作します。--reload
フラグは、ファイルの変更を検出してサーバーを自動的に再起動するためのものです。
- ドキュメントの確認:
FastAPIは自動的にSwagger UIとReDocを生成します。これにより、APIのドキュメンテーションとインタラクティブなテストが行えます。
- Swagger UI: http://127.0.0.1:8000/docs
- ReDoc:</code>http://127.0.0.1:8000/redoc
これはFastAPIを使用して非常に基本的なAPIを作成するための簡単なガイドです。FastAPIには、依存性注入、セキュリティ、非同期処理、データモデルのバリデーションなど、多くの高度な機能が含まれており、これを使用して効率的に強力なAPIを構築することができます。