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

前言

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

 

安装 python-multipart

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

pip install python-multipart

 

Form

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

 

简单的栗子

复制代码
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 无法切换到  multipart/form-data ,如果需要测试,要用 FastAPI 提供的 File 哦
  • File 详细教程

 

posted @   小菠萝测试笔记  阅读(2807)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2020-09-25 Cypress系列(53)- as() 命令详解
点击右上角即可分享
微信分享提示