【FastAPI+Streamlit】パスオペレーションとデコレーターを理解する

スポンサーリンク

フロントエンドはstreamlitバックエンドはFastAPIのフレームワークでFastAPIのチュートリアルをやってみました。あくまでFastAPIの理解が目的でStreamlitは、フロントエンド部分を簡単に表示させるために使用しています。今回はパスオペレーションについてです。

前回の記事

パスオペレーション

パスオペレーションは、パスオペレーションに分解して考えるとわかりやすい。

パス

FastAPIでのパスは最初のURL / から始まるURLのことを指す。

例えば、https://example.com/items/fooというURLの場合は、

/items/foo

パスとなる。パスは、通常のWEB開発ではエンドポイントルートと呼ばれることが多い。

オペレーション

オペレーションは、一般的にHTTPメソッドと呼ばれることが多い。一般的なオペレーションと用途は以下の通り。また、各操作の頭文字を取ったCRUDでも表すことができる。

オペレーション用途CRUD
POSTデータの作成Create
GETデータの読み取りRead
PUTデータの更新Update
DELETEデータの削除Delele

デコレーター

FastAPIでは@オペレーションの構文をデコレータと呼んでいる。デコレータは関数の上に配置する。

デコレータの直下に記述されている関数を受け取り処理を行う。以下のコードを例にすると パス /
オペレーション getした場合にdef rootの関数が呼び出されて、Hello Worldが表示させるということをFastAPIに通知している。ちなみにappはFastAPIのインストタンス自身のことを指す。

from fastapi import FastAPI

app = FastAPI()

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

一般的には以下のように使われる。

  • @app.get(“/”)
  • @app.post(“/”)
  • @app.put(“/”)
  • @app.delete(“/”)

パスオペレーション関数とコンテンツの返信

from fastapi import FastAPI

app = FastAPI()

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

ここでは、def root():がパスオペレーション関数return {“message”: “Hello World”}コンテンツの返信となる。return以降が返ってくるコンテンツとなりここではJson形式で返ってくるようになっている。returnで返ってくるコンテンツは辞書、リスト、文字列、数値などで返すこともできる。

また、FastAPIで型ヒントのライブラリとして使われているPydantecのモデルを返すことも可能。

Streamlitで表示

FastAPIは、バックエンド側の処理なので実行しても、Jsonファイルが返ってくるだけ。この返ってきたコンテンツをStreamlitで表示させると以下のようになる。

import streamlit as st
import requests
st.set_page_config(layout="wide")
url = 'http://localhost:8000'
#URLをたたいて変数に保存
response = requests.get(url)
#jsonデータに変換する
jsondata = response.json()
msg = jsondata['message']
st.title(msg)

まとめ

  • パスは一般的にエンドポイントまたはルートと呼ばれる。
  • オペレーションは一般的にHTTPメソッドと呼ばれる。(POST,GET,PUT,DELETE)
  • @オペレーションの構文をデコレータと呼んでいる。
  • デコレーターの直下には関数が記述される。
  • return文でコンテンツが返信される。

コメント

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