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

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

前言


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

 

安装 python-multipart


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

pip install python-multipart

 

Form


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

image.png

简单的栗子


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

 

正确传参的请求结果

image.png


请求头

image.png

查看 Swagger API 文档

image.png

  • 可以看到接口文档中,接口的 Content-type 默认也是 application/x-www-form-urlencoded
  • 注意:在 Swagger 上无法测试上传文件,因为 Content-type 无法切换到  multipart/form-data ,如果需要测试,要用 FastAPI 提供的 File 哦
  • File 详细教程

 

相关文章
|
JSON 数据格式 Python
FastAPI(45)- 返回响应数据的五种常见方式
FastAPI(45)- 返回响应数据的五种常见方式
1031 0
FastAPI(45)- 返回响应数据的五种常见方式
FastAPI(15)- 声明请求示例数据(下)
FastAPI(15)- 声明请求示例数据(下)
188 0
FastAPI(15)- 声明请求示例数据(下)
|
JSON API 数据格式
FastAPI(15)- 声明请求示例数据(上)
FastAPI(15)- 声明请求示例数据(上)
183 0
FastAPI(15)- 声明请求示例数据(上)
|
存储 开发框架 JSON
FastAPI 学习之路(二十一)请求体 - 更新数据
FastAPI 学习之路(二十一)请求体 - 更新数据
FastAPI 学习之路(二十一)请求体 - 更新数据
|
开发框架 JSON 数据格式
FastAPI 学习之路(十八)表单与文件
FastAPI 学习之路(十八)表单与文件
FastAPI 学习之路(十八)表单与文件
|
开发框架 数据安全/隐私保护
FastAPI 学习之路(十六)Form表单
FastAPI 学习之路(十六)Form表单
FastAPI 学习之路(十六)Form表单
fastapi PUT更新数据 / PATCH部分更新
fastapi PUT更新数据 / PATCH部分更新
135 0
fastapi PUT更新数据 / PATCH部分更新
|
存储 JSON 数据格式
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
320 0
fastapi 请求文件 / 表单 / 处理错误 / 路径操作配置 / jsonable_encoder
|
JSON 数据库 数据安全/隐私保护
fastapi 响应模型 / 响应状态码 / 表单参数
fastapi 响应模型 / 响应状态码 / 表单参数
233 0
fastapi 响应模型 / 响应状态码 / 表单参数
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)