POST FastAPI メソッドがあります。クラスもクエリ文字列も構築したくありません。そこで、Body()
メソッドを適用することにしました。
@app.post("/test-single-int")
async def test_single_int(
t: int = Body(...)
):
pass
これがリクエストです
POST http://localhost:8000/test-single-int/
{
"t": 10
}
そして、これが応答です
HTTP/1.1 422 Unprocessable Entity
date: Fri, 22 May 2020 10:00:16 GMT
server: uvicorn
content-length: 83
content-type: application/json
connection: close
{
"detail": [
{
"loc": [
"body",
"s"
],
"msg": "str type expected",
"type": "type_error.str"
}
]
}
しかし、多くのサンプルを試した結果、複数ある場合はエラーにならないことがわかりましたBody()
。例えば、
@app.post("/test-multi-mix")
async def test_multi_param(
s: str = Body(...),
t: int = Body(...),
):
pass
リクエスト
POST http://localhost:8000/test-multi-mix/
{
"s": "test",
"t": 10
}
応答
HTTP/1.1 200 OK
date: Fri, 22 May 2020 10:16:12 GMT
server: uvicorn
content-length: 4
content-type: application/json
connection: close
null
誰かが私の実装について何か考えを持っていますか? 間違っていますか?それはベストプラクティスではありませんか?それともバグですか?