FastApi教程|表格数据

发表时间:2020-03-09

当您需要接收表单字段而不是JSON时,可以使用 Form

信息

要使用表格,请先安装 python-multipart

例如 pip install python-multipart

导入 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}

定义 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 显式 使用 ,因为没有它,参数将被解释为查询参数或主体(JSON)参数。

关于“表单域”

HTML表单( <form></form> )将数据发送到服务器的方式通常对该数据使用“特殊”编码,这与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协议的一部分。

回顾

使用 Form 申报表单数据输入参数。

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free