【Python3】FastAPIのパスパラメーターについて
おはこんばんにちは、せなです。
今回は、FastAPIの基本とも言える、パスパラメータについて解説したいと思います。
初めに
FastAPIについてとか開発環境の構築方法については↓の記事を参考にしてください。
https://senablog.com/python-fastapi-nginx/
パスパラメータとは?
FastAPIではURLパスに変数を宣言できます。
例えば以下のPGを記載して「http://127.0.0.1:8000/items/hoge」にアクセスしてみます。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_name}")
async def items(item_name):
return {"item_name": item_name}
if __name__ == "__main__":
uvicorn.run("main:app", port=8000)
すると以下のような画面が表示されます。
「/items/hoge」を「/items/fugafuga」とかにすると「fugafuga」と表示されますね。
また、以下の様にint型などを指定することもできます。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_number}")
async def items(item_number: int):
return {"item_number": item_number}
if __name__ == "__main__":
uvicorn.run("main:app", port=8000)
「/items/10」の様に数値を設定すれば、10が表示されます。
ただし、int型に変換できない文字などを入力すると以下の様なエラーとなりますので、注意してください。
パスパラメーターにファイルパスを与える
FastAPIをサポートしているOpenAPIでは内部パスを含める書き方についてサポートしていません。
FastAPIの元であるStarletteのパスパラメーターを使用すると以下の様な書き方が好ましい様です。
import uvicorn
from fastapi import FastAPI
app = FastAPI()
@app.get("/files/{file_path:path}")
async def file(file_path: str):
return {"file_path": file_path}
if __name__ == "__main__":
uvicorn.run("main:app", port=8000)
「http://127.0.0.1:8000/files/hoge.txt」にアクセスすることで以下の様な画面が表示されます。
また、ファイル内容を表示したり、ファイルのダウンロードをする方法については以下のURLに記載していますので、よければどうぞ。
https://senablog.com/python-fastapi-file-download
最後に
FastAPIの基本となるパスパラメーターについて解説してみました。
公式ドキュメントを参考にしていますので、より詳しく知りたい方は以下のURLを参考にしてくださいね。
FastAPI 公式URL: https://fastapi.tiangolo.com/
ではでは〜
ディスカッション
コメント一覧
まだ、コメントがありません