フロントエンドは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文でコンテンツが返信される。
コメント