Python で FastAPI を使ったアプリケーションを Web アプリケーションを作成する際、POST メソッドで渡されるリクエストの処理は公式サイトの Request Body 説明ページ によると pydantic を使ったクラスで処理するサンプルが掲載されています。 しかし、例えば「POST されてくる JSON のフォーマットが一定では無い」といったケースだと pydantic ではやや困る場合があるかも知れません。 そういった場合は pydantic を使わず、Body
を使ってリクエストを受け取り、json として処理する方法があります。 下記は FastAPI を mangum で AWS へデプロイすることを前提にしたサンプルです。
from fastapi import Body, FastAPI
from mangum import Mangum
app = FastAPI()
@app.post('/')
def read_root(body=Body(...)):
return {'Body': body}
handler = Mangum(app, enable_lifespan=False)
Body は辞書型
仮に以下のような JSON を POST するとします。
{
"name": "John",
"age": 25
}
body
は辞書型です。 リクエストで受け取ったデータにアクセスするには下記のように処理します (辞書型で受け取っているので、処理が簡単です)。
import json
from fastapi import Body, FastAPI
from mangum import Mangum
app = FastAPI()
@app.post('/')
def read_root(body=Body(...)):
return {'name': body['name']}
handler = Mangum(app, enable_lifespan=False)
コメント