Python の FastAPI Web アプリで pydantic を使わずに POST メソッドを処理する
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 するとします。
body は辞書型です。 リクエストで受け取ったデータにアクセスするには下記のように処理します (辞書型で受け取っているので、処理が簡単です)。