【Python】FastAPIでREST APIを実装する方法

当ページのリンクには広告が含まれています。
いずみ

こんな悩みを解決できる記事を書きました!

僕は現役フリーランスエンジニア(歴年)で、資格は個保有しています。

PythonでFastAPIを使ってREST APIを実装する方法を知りたい」とお考えではありませんか?

Pythonで手早くWeb APIを作りたいと考えている方へ。

FastAPIを使えば、型ヒントを書くだけで入力チェックとAPIドキュメントが自動生成されるAPIを作れます。

いずみ

セットアップから動作確認まで、サクッと解説します。

ということで、本記事ではPythonでFastAPIを使ってREST APIを実装する方法を解説します。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
執筆者/監修者
  • フリーランスエンジニア(保有資格個、企業と直接契約
  • ブログ・アフィリエイト歴7年(2018年〜)
  • ブランドせどりで月利50万円⇨脱サラ
  • 投資(仮想通貨・FX)歴7年(2018年〜)
  • X(旧Twitter)フォロワー約1,900人
  • 運営者情報はこちら
いずみです
目次

【Python】FastAPIでREST APIを実装する方法

早速ですが、PythonでFastAPIを使ったREST APIの実装方法を解説します。

FastAPIとUvicornをインストールする

まずは、FastAPIとUvicornをインストールします。

STEP
仮想環境を作成する

プロジェクトごとに依存パッケージを分離するため、仮想環境を作成します。

python -m venv venv
source venv/bin/activate
STEP
FastAPIとUvicornをインストールする

pipコマンドでFastAPIとUvicornをインストールします。

pip install fastapi "uvicorn[standard]"

FastAPIはPydanticをデータ検証ライブラリとして内部で利用しているため、同時にインストールされます。

いずみ

FastAPIのインストール作業は以上で完了です。

シンプルなエンドポイントを作成する

続いて、シンプルなGETエンドポイントを作成します。

プロジェクト直下にmain.pyを作成し、以下のコードを記載します。

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

関数の引数に型ヒントを書くだけで、FastAPIがパスパラメータやクエリパラメータの型を自動的に検証してくれます。

例えばitem_idに数値以外の文字列を渡すと、FastAPIが自動でエラーレスポンスを返してくれます。

いずみ

バリデーション処理を自分で書かなくていいのは地味に助かります。

Pydanticでリクエストボディを検証してPOSTエンドポイントを作る

次に、Pydanticのモデルを使ってPOSTエンドポイントを作成します。

STEP
Pydanticモデルを定義する

BaseModelを継承したクラスで、リクエストボディの形を定義します。

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None
STEP
POSTエンドポイントを実装する
@app.post("/items/")
def create_item(item: Item):
    return {"item_name": item.name, "item_price": item.price}

引数の型をItemにするだけで、リクエストボディのJSONが自動でパースされ、型が合わない場合はエラーレスポンスが返ります。

いずみ

JSONのパースやバリデーションを手書きしていた頃を考えると、かなり楽になりました。

Uvicornで起動して自動ドキュメントを確認する

最後に、作成したAPIをUvicornで起動します。

uvicorn main:app --reload

--reloadオプションを付けると、コードを保存するたびにサーバーが自動で再起動します。

ブラウザでhttp://127.0.0.1:8000/docsにアクセスすると、Swagger UIによる自動生成ドキュメントが確認できます。

作成したエンドポイントに対して、Swagger UI上から直接リクエストを送って動作確認することも可能です。

いずみ

ドキュメントを別途整備する手間が省けるのは、FastAPIの大きな魅力だと思います。

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式

【厳選】フリーランスエンジニアにおすすめなエージェント3選

フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。

僕が実際に利用しているおすすめエージェントを紹介しますね。

いずみ

エージェントは必ず複数登録してください。

担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…

僕は実際に5つのエージェントを使い回していますよ。

フリーランスを始めるなら「

案件数マージン率単価
約88,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 業界最大級の案件数。
  • 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
  • 案件参画中のフォローの充実。

※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。

は業界最大手のフリーランスエージェントです。

とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!

いずみ

僕もはじめてフリーランスの案件を貰ったのはです。

保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。

手厚い保障を重視したいなら「

案件数マージン率単価
約10,000件非公開
初心者福利厚生申し込み
無料
Good Point
  • 手厚い保障で正社員並みの安心感。
  • 還元率60%超え&単価公開でクリアな契約。
  • 給与保障制度(審査あり)。

は手厚い保障が特徴のフリーランスエージェントです。

フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。

いずみ

僕も何度か案件を紹介してもらいました。

自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。

週2〜3日の案件探しなら「

案件数マージン率単価
約5,000件非公開
初心者福利厚生申し込み
経験者向け無料
Good Point
  • IT案件に特化したフリーランスエージェント。
  • 週2〜3日の案件が豊富。
  • リモート案件が多く、直エンドなので単価も高い。

※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。

はIT案件に特化したフリーランスエージェントです。

週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。

いずみ

週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。

とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!

よくある質問

FastAPIとFlaskはどちらを選べばいいですか?

型ヒントを活用した開発速度や自動ドキュメント生成を重視する場合は、FastAPIが適しています。

既存の資産や豊富な情報量を重視する場合は、Flaskも有力な選択肢です。

型ヒントを書かないとエラーになりますか?

型ヒントを省略してもPythonの実行自体はエラーになりません。

ただしFastAPIはPydanticの型ヒントを使ってリクエストデータを検証するため、型ヒントを省略すると入力チェックの恩恵を受けられなくなります。

本番環境でも–reloadオプションを付けたままでいいですか?

--reloadオプションは開発用のコード自動リロード機能のため、本番環境では外す必要があります。

本番運用では、Gunicornと組み合わせたり複数ワーカーで起動したりする構成が一般的です。

まとめ

今回は、PythonでFastAPIを使ってREST APIを実装する方法について解説しました。

以下が本記事のまとめになります。

まとめ
  • FastAPIはpip install fastapi uvicornだけで導入でき、型ヒントを書くだけで入力チェックとAPIドキュメントが自動生成される。
  • Pydanticのモデルを定義するだけで、POSTのリクエストボディを簡単に検証できる。
  • uvicorn main:app --reloadで起動すれば、Swagger UI上から動作確認までできる。
まとめ
いずみ

最後までお読みいただき、ありがとうございました!

スクロールできます
【当サイト】おすすめフリーランスエージェント3選
エージェント評価ポイント公式サイト
レバテックフリーランス

5.0
業界最大級のエージェント。
高単価案件が豊富。
公式
Midworks

4.8
満足度調査で
3年連続3冠を達成。
公式
ITプロパートナーズ

4.6
週2〜3向けの案件が豊富。公式
  • クソおすすめ本
¥4,480 (2024/06/01 23:28時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
いずみ

海外のエンジニアがどういった思考で働いているかが理解できます。

海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次