前回、FastAPIを起動してみて、Getしてみました。今回はPostしてみます。
ソースコード
早速サンプルコードを実装してみます。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class SampleDTO(BaseModel):
text1: str
text2: str
@app.post("/test_post")
async def sample_post(sample: SampleDTO):
return sample
簡単に解説します。
以下のコードでリクエストボディの型を定義しています。
class SampleDTO(BaseModel):
text1: str
text2: str
FastAPIではリクエストボディの型をpydanticという型指定ができるライブラリを用いてます。
これを使うことで、型が異なった時にエラーを吐き出してくれます。
以下のコードでPostについての実装しています。@app.post
デコレーターをつけることで、Postを定義しています。
@app.post("/test_post")
async def sample_post(sample: SampleDTO):
return sample
この関数の引数でSampleDTOという先ほど定義した型のリクエストを受け取ることを宣言しています。
動かしてみる
では、これを先ほど同様に動かしてみます。
uvicorn main:app --reload
FastAPIではデフォルトでSwagger UIが組み込まれているので、
http://127.0.0.1:8000/docs にアクセスすることで、Swagger UIを起動することができます。
右上の下矢印をクリックします。
右上のtry it outをクリックします。
Request bodyに適当に入力します。今回はtext1にfoo、text2にbarと記述して、Excuteボタンを押してPostしてみます。
今回はリクエストをそのまま返しているため、リクエストと同じデータが帰ってきます。
コメント