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

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 @ 2022-01-05 11:58  小学弟-  阅读(320)  评论(0编辑  收藏  举报