接收的不是 JSON,而是表单字段时,要使用 Form。
说明
要使用表单,需预先安装 python-multipart。
例如,pip install python-multipart。
从 fastapi 导入 Form:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
创建表单(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)相同的元数据和验证。
说明
Form 是直接继承自 Body 的类。
提示
声明表单体要显式使用 Form ,否则,FastAPI 会把该参数当作查询参数或请求体(JSON)参数。
与 JSON 不同,HTML 表单(
)向服务器发送数据通常使用「特殊」的编码。FastAPI 要确保从正确的位置读取数据,而不是读取 JSON。
技术细节
表单数据的「媒体类型」编码一般为 application/x-www-form-urlencoded。
但包含文件的表单编码为 multipart/form-data。文件处理详见下节。
编码和表单字段详见 MDN Web 文档的 POST小节。
警告
可在一个路径操作中声明多个 Form 参数,但不能同时声明要接收 JSON 的 Body 字段。因为此时请求体的编码是 application/x-www-form-urlencoded,不是 application/json。
这不是 FastAPI 的问题,而是 HTTP 协议的规定。
本节介绍了如何使用 Form 声明表单数据输入参数。
当前题目:创新互联FastAPI教程:FastAPI教程 表单数据
当前网址:http://www.shufengxianlan.com/qtweb/news17/452917.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联