zoukankan      html  css  js  c++  java
  • 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 详细教程
  • 相关阅读:
    【Mysql 8001错误
    【mysql查询今天、昨天、7天、近30天、本月、上一月 数据】
    bootstrap-table 常用总结-1
    前端下载图片
    swiper 轮播中常用的效果,持续更新
    常用的时间函数整理
    拼接字符转的转义
    Ajax跨域请求,设置content
    JS MD5 返回二进制格式
    jqgrid three 树形结构
  • 原文地址:https://www.cnblogs.com/poloyy/p/15311533.html
Copyright © 2011-2022 走看看