前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastAPI(23)- 详解 Form,发送表单数据

FastAPI(23)- 详解 Form,发送表单数据

作者头像
小菠萝测试笔记
发布2021-09-27 15:53:48
2.8K0
发布2021-09-27 15:53:48
举报
文章被收录于专栏:自动化、性能测试

前言

  • form-data 表单格式的请求数据其实也是挺常见的
  • FastAPI 通过 Form 来声明参数需要接收表单数据

安装 python-multipart

要用 Form,需要先安装这个库

代码语言:javascript
复制
pip install python-multipart

Form

Form 是继承自 Body,所以可以定义和 Body 相同的元数据以及额外的验证

简单的栗子

代码语言:javascript
复制
import uvicorn
from fastapi import FastAPI, Form

app = FastAPI()


@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
    return {"username": username, "password": password}


if __name__ == "__main__":
    uvicorn.run(app="10_Form:app", host="127.0.0.1", port=8080, reload=True, debug=True)

在 OAuth2 规范的一种使用方式(密码流)中,需要将用户名、密码作为表单字段发送,而不是 JSON【后面会详解 OAuth2】

重点
  • 请求发送表单格式的数据,请求头通常会包含

Content-Type: application/x-www-form-urlencoded

  • 如果需要发送包含文件的表单数据, 会变成

Content-Type: multipart/form-data

正确传参的请求结果
请求头
查看 Swagger API 文档
  • 可以看到接口文档中,接口的 Content-type 默认也是

application/x-www-form-urlencoded

  • 注意:在 Swagger 上无法测试上传文件,因为 Content-type 无法切换到 ,如果需要测试,要用 FastAPI 提供的 File 哦

multipart/form-data

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装 python-multipart
  • Form
  • 简单的栗子
    • 重点
      • 正确传参的请求结果
        • 请求头
          • 查看 Swagger API 文档
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档