当您需要接收表单字段而不是JSON时,可以使用Form。
信息
要使用表格,请先安装python-multipart。
例如pip install python-multipart。
1、导入 Form
Form从导入fastapi:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
2、定义Form参数
创建表单参数的方式与您Body或相同Query:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
例如,以一种可以使用OAuth2规范的方式(称为“密码流”),需要发送username和password作为表单字段。
该规范要求的领域,以准确地命名username,并password和发送表单域,而不是JSON。
有了Form你可以声明相同的元数据和验证与Body(和Query,Path,Cookie)。
信息大连妇科医院哪个好 http://xmobile.bhbyby.com/
Form是直接从继承的类Body。
声明
要声明表单主体,您需要Form显式使用,因为没有它,参数将被解释为查询参数或主体(JSON)参数。
3、关于“表单域”
HTML表单()将数据发送到服务器的方式通常对该数据使用“特殊”编码,这与JSON不同。
FastAPI将确保从正确的位置而不是JSON读取数据。
技术细节
来自表单的数据通常使用“媒体类型”进行编码application/x-www-form-urlencoded。
但是,当表单包含文件时,它将被编码为multipart/form-data。
如果您想了解有关这些编码和表单字段的更多信息,请访问MDN Web文档POST。
警告
您可以Form在路径操作中声明多个参数,但也不能声明Body希望以JSON形式接收的字段,因为请求将使用application/x-www-form-urlencoded代替编码主体application/json。
这不是FastAPI的限制,它是HTTP协议的一部分。
查看更多关于FastAPI基础之 Form表单数据的详细内容...