我正在尝试从 html 表单提交数据并使用 pydantic 模型对其进行验证。
使用此代码
from fastapi import FastAPI, Form
from pydantic import BaseModel
from starlette.responses import HTMLResponse
app = FastAPI()
@app.get("/form", response_class=HTMLResponse)
def form_get():
return '''<form method="post">
<input type="text" name="no" value="1"/>
<input type="text" name="nm" value="abcd"/>
<input type="submit"/>
</form>'''
class SimpleModel(BaseModel):
no: int
nm: str = ""
@app.post("/form", response_model=SimpleModel)
def form_post(form_data: SimpleModel = Form(...)):
return form_data
Run Code Online (Sandbox Code Playgroud)
我如何收到 http 状态422不可处理实体的错误
{"detail":[{"loc":["body","form_data"],"msg":"field required","type":"value_error.missing"}]}
等效的 curl 命令(由 firfox 生成)是
curl ' http://localhost:8001/form ' -H 'Content-Type: application/x-www-form-urlencoded' --data 'no=1&nm=abcd'
这里的请求正文包含 no=1&nm=abcd …
我想在 FastAPI 中创建一个可能接收(多部分)Form数据或JSON正文的端点。有没有办法让这样的端点接受或者检测正在接收哪种类型的数据?