FastAPIでPythonのWebアプリケーションを開発する方法
FastAPIはPythonのWebアプリケーションフレームワークであり、高性能で堅牢なAPIを構築するためのツールセットを提供します。
インストール
ファイルアップロード利用時は以下もインストールします。
使用方法
appオブジェクトのデコレータ(@app.get
や@app.post
)を使用して、ルーティングを定義します。引数にはURLパスを指定します。関数デコレータの下に書かれた関数が、そのルーティングに対応した実行関数となります。
クエリパラメータ
パスパラメータ
アクセスするURLにパラメータを埋め込みます。
パラメータのデフォルト値は、次のように記述できます。
しかし、この時、/test-process
にアクセスしても404エラーが発生します。
パラメータなしで/test-process
にアクセスするためには別のエンドポイントを追加します。
リクエストボディ
下記はJSONで受け取る場合です。オプショナルなパラメータは Union[型, None] = None
で定義します。
レスポンス
画面については、別記事に記載予定です。
JSONを返す
ファイルを返す
CSVデータを返す
ストリーミングを返す
下記はJPEGデータを順番に送信し、MotionJPEGのように扱う方法です。
エラーレスポンス
コマンドラインからの実行方法
上記、main.pyの場合、uvicorn main:app
で実行します。
- main - main.py
- app - main.py内のappオブジェクト
上記実行後、http://127.0.0.1:8000
にブラウザでアクセスすると結果が取得できます。
外部からのアクセス
上記では、127.0.0.1またはloclahostでしかアクセスできません。外部からアクセスするには、以下のようにコマンドを実行します。
実行ファイルがサブディレクトリにある場合
上記main.pyが次のような構成の場合。
project_rootから実行する場合は、コマンドを次のようにします。
WSL2の場合
上記ではWSL2内コマンドip a show dev eth0
のアドレスでしかアクセスできません。(同一PCからしかアクセスできない)
WindowsPCのIPアドレスで外部からアクセスするためには、Windows側でポートフォワード設定が必要です。
eth0のアドレスではアクセスできるが、localhostで接続できない場合
WSL2のWebサーバへlocalhost指定でアクセスするために、Windows側で次のファイルに以下の変更が必要です。
%USERPROFILE%/.wslconfig
変更後、PowerShellで次のコマンドでWSL2を終了してから、WSL2を起動します。
ポートの指定
デフォルトのポートは8000。変更したい場合は--port
パラメータを指定する。
Pythonコマンドでの実行
python3 ファイル名
で実行したい場合は次のようにファイルに記述します。
import uvicorn
が必要です。