あめがえるのITブログ

頑張りすぎない。ほどほどに頑張るブログ。

FastAPIフレームワークでPythonのWebAPIを作ってみた

Amazon Elastic BeanstalkのWorker環境を構築する際に、WebAPIプログラムを作成する必要があったのでPythonで簡単にWebAPIが作成できると噂のFastAPIを使ってみた。
※調べてみたらFastAPIをElastic BeanstalkのWorker環境に適用するのは少しこねこねする必要がありそうだったので別のでやるかも。。(;・∀・)

FastAPIとは

FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以降でAPI を構築するための、モダンで、高速(高パフォーマンス)な、Web フレームワークです。

主な特徴:
高速: NodeJS や Go 並みのとても高いパフォーマンス (Starlette と Pydantic のおかげです)。 最も高速な Python フレームワークの一つです.
高速なコーディング: 開発速度を約 200%~300%向上させます。
少ないバグ: 開発者起因のヒューマンエラーを約 40%削減します。
直感的: 素晴らしいエディタのサポートや オートコンプリート。 デバッグ時間を削減します。
簡単: 簡単に利用、習得できるようにデザインされています。ドキュメントを読む時間を削減します。
短い: コードの重複を最小限にしています。各パラメータからの複数の機能。少ないバグ。
堅牢性: 自動対話ドキュメントを使用して、本番環境で使用できるコードを取得します。
Standards-based: API のオープンスタンダードに基づいており、完全に互換性があります:

だそうです。簡単らしいのでサクッと試させてもらいます。


やること

Windows11でFastAPIフレームワークを利用してPythonで動作するWebAPIを作成する

前提

 ・Python3系がインストールされていること
 ・pipがインストールされていること

環境

Windows11{
Python 3.11.3,
FastAPI
}

フォルダ構成

C:\python\main.py

実践!

1.FastAPIインストール

> pip3 install fastapi
> pip3 install "uvicorn[standard]"


2.実行ファイル作成

> md c:\python
> vim c:\python\main.py


3.main.pyに下記を入力

# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
  return {"message": "Hello World!"}  


4.実行

> cd c:\python
> uvicorn main:app --reload
※こんな感じで表示だれたらOK  
INFO:     Will watch for changes in these directories: ['c:\\gitrepository\\fastapi\\env']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [2536] using WatchFiles
INFO:     Started server process [10652]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

※下記エラーが表示されたらuvicornにパスを通します。

> uvicorn main:app --reload
'uvicorn' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

 [スタート]-[設定]-[バージョン情報]

 [システムの詳細設定]

 システムのプロパティが表示されたら[環境変数]
 [Path]にuvicornのパスを追加
 ※uvicornのパスはExplorerで検索する。
私の場合はこちら。デフォルトがここ??

C:\Users\[ユーザ名]\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\Scripts


5.動作確認
ブラウザでlocalhost:8000にアクセスし、[{"message": "Hello World!"}]が表示されることを確認

感想

パスだけはまったけど簡単でした(∩´∀`)∩ワチョーイ