简单絮叨下,如有问题请私信
上篇文章主要唠了接口响应的一些东西,今天主要是唠Form
表单和文件处理。表单可以理解为数据采集,而文件处理就是在获得客户端的文件进行数据返回或者直接上传服务器。
fastapi
框架中提供了操作表单的Form
和处理文件的File
,其参数的方式与 Body
和 Query
一样。
表单数据
From
它接收的不是json
,而是表单字段,使用表单需要安装pip install python-multipart
(Python
的流式多部分解析器)
from fastapi import Form
from fastapi import FastAPI
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
if password == "123456":
return {"username": username}
else:
return "密码或账号不正确..."
注释信息:
usernam
和password
是定义了Form
表单- 如果
password
不等于字符串类型的123456
,就抛出提示信息,相反就是返回用户名 - 可在一个路径操作中声明多个
Form
参数 - 表单数据的「媒体类型」编码一般为
application/x-www-form-urlencoded
启动服务:
PS E:\git_code\python-code\fastapiProject> uvicorn form_main:app --reload
请求接口:
POST http://127.0.0.1:8000/login/
请求参数:
- 所以在
postman
中的body
-选择form-data
或x-www-form-urlencoded
进行传参
KEY | VALUE |
---|---|
username | zhangsan |
password | 123456 |
请求结果:
{
"username": "zhangsan"
}
请求文件
文件上传也是以表单的形式发送的,它默认的媒体类型编码一般为 application/form-data
因为是以表单的形式发送数据,固要安装pip install python-multipart
(Python
的流式多部分解析器)
文件上传分为两种形式,首先是直接File
,其次是UploadFile
,它俩的区别就是UploadFile
是处理大数据,相反的就是适用于小型文件
from fastapi import File
from fastapi import FastAPI
from fastapi import UploadFile
app = FastAPI()
@app.post("/file/")
async def create_file(file: bytes= File(...)):
"""
直接定义`File`参数
:param file:
:return:
"""
return {"file": file}
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
"&