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


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

前言

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

安装python-multipart

# 要是用Form,需要先安装这个库
pip install python-multipart

Form

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

简单的栗子

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     : 2024/1/19 10:18 
# @Author   : 22759
# @Email    : lyt_sy@sina.com
# @Project  : FastApi-demo
# @File     : demo19
# @Software : PyCharm
from fastapi import APIRouter, Form

router = APIRouter()


@router.post('/form/')
async def form(username: str = Form(...), password: str = Form(...)):
    return {'username': username, 'password': password}

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

重点

  • 请求发送表单格式的数据,请求头通常包含Content-Type: application/x-www-form-urlencoded
  • 如果需要发送包含文件的表单数据,会变成Content-Type: multipart/form-data

正确传参请求结果

请求头

查看Swagger

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

文章作者: 刘宇亭
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 刘宇亭 !
评论
  目录