【Python】 FastAPI入門:Web APIを作ってみよう

FastAPI Python
この記事は約6分で読めます。

こんにちは、JS2IIUです。
この記事では、Python初心者の方でもすぐに始められるFastAPIの基本的な使い方をご紹介します。PythonでWeb APIを作ってみたいけど、FlaskやDjangoは少しハードルが高そう…と感じている方におすすめです!今回もよろしくお願いします。

FastAPIってなに?

FastAPIは、Python製の軽量・高速なWebフレームワークです。以下のような特徴があります:

  • とても高速(StarletteとPydanticに基づいています)
  • Pythonの型ヒントを活用してバリデーションや自動ドキュメント生成ができる
  • Swagger UI による自動APIドキュメントが超便利
  • 非同期(async/await)にも対応していて、スケーラブル

実際にWebアプリやマイクロサービス開発でよく使われている人気のフレームワークです。

開発環境を整えよう

1. Pythonのインストール

まずはPython(3.7以上)をインストールしましょう。インストール方法は、Pythonの公式ページを参照してください。
バージョンを確認します。Mac/Linuxでは以下で確認:

Bash
python3 --version

2. 仮想環境の作成(おすすめ)

仮想環境を作成して、仮想環境をアクティベートします。
仮想環境を作ることで、インストールするライブラリの管理がしやすくなります。

Bash
python -m venv venv
# Linux/Max
source venv/bin/activate 
# Windows
venv\Scripts\activate

3. 必要なパッケージをインストール

仮想環境をアクティベートした状態で以下のコマンドを実行してください。

Bash
pip install fastapi uvicorn

uvicorn はFastAPIアプリを動かすための軽量ASGIサーバーです。

最初のFastAPIアプリを作ってみよう

まずは main.py というファイルを作成して、次のコードを記述しましょう。

Python
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

実行してみよう

以下のコマンドで起動できます:

Bash
uvicorn main:app --reload
  • ブラウザで http://127.0.0.1:8000 にアクセスすると、JSON形式でレスポンスが返ってきます。
  • http://127.0.0.1:8000/docs にアクセスすると、Swagger UIが表示され、APIを試せます!
  • Swagger UIは、Web APIの使い方を自動で見える化してくれるツールです。FastAPIでは、APIのエンドポイント(URL)、リクエストの形式、レスポンスの内容などをPythonのコードで定義すると、自動でブラウザから確認・テストできるページを作ってくれます。

パスパラメータとクエリパラメータを使う

パスパラメータとクエリパラメータは、Web APIで値を受け取る方法の2つです。パスパラメータはURLの一部として値を指定し、特定のリソースを識別するときに使います(例:/users/10 はIDが10のユーザー)。一方、クエリパラメータはURLの末尾に「?」を付けてキーと値の組みで指定し、検索条件や絞り込みなどに使われます(例:/search?q=apple は”apple”というキーワードで検索)。FastAPIでは両方を簡単に扱うことができ、用途に応じて使い分けることで、柔軟なAPI設計が可能です。

パスパラメータの例

Python
@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id}

URLで http://127.0.0.1:8000/users/10 にアクセスすると:

Plaintext
{"user_id": 10}

になります。

クエリパラメータの例

Python
@app.get("/search")
def search(q: str = None):
    return {"query": q}

例えば、http://127.0.0.1:8000/search?q=apple にアクセスすると:

Plaintext
{"query": "apple"}

POSTメソッドでデータを受け取る

FastAPIでは、pydantic を使ってJSONデータを簡単に受け取ることができます。

ユーザー登録の例

Python
from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

@app.post("/users/")
def create_user(user: User):
    return {"message": f"{user.name}さん({user.age}歳)を登録しました"}

Swagger UIから以下のようなJSONを送ってテストできます:

JSON
{
  "name": "Taro",
  "age": 25
}

レスポンス:

Plaintext
{"message": "Taroさん(25歳)を登録しました"}

APIドキュメントが自動で生成される!

FastAPIの素晴らしいところは、自動でAPIのドキュメントが生成されることです。

Swagger UI

http://127.0.0.1:8000/docs にアクセスすると、APIの情報やパラメータ、実行ボタンが表示されます。

Redoc

http://127.0.0.1:8000/redoc にアクセスすると、別のデザインのAPIドキュメントが見られます。

よくあるエラーと対処法

エラー内容原因と対処法
ModuleNotFoundErrorfastapiuvicorn が未インストール。pip install を忘れずに
ImportError: cannot import name 'FastAPI'from fastapi import FastAPI を確認
TypeError関数の引数の型ミス。int, str などを確認
/docs にアクセスできないサーバーが起動していない、またはポートが違う

まとめ

FastAPIは、初心者でも簡単に始められて、高速・安全なWeb APIを作れるフレームワークです。

  • 型ヒントで入力バリデーションも自動化
  • Swagger UIでAPIテストが簡単
  • 開発スピードが爆速!

参考リンク

最後まで読んでいただきありがとうございます。
ご意見ご質問はコメント欄からよろしくお願いします。

コメント

タイトルとURLをコピーしました