在FastAPI中,处理表单数据通常涉及到两个步骤:定义一个Pydantic模型来表示表单数据的结构,以及使用FastAPI的Form
类来声明路由函数参数,以便FastAPI可以自动解析表单数据。
Form 表单数据
定义Pydantic模型
首先需要定义一个Pydantic模型来表示你的表单数据。这个模型将用于验证和解析表单数据。
from pydantic import BaseModel
class User(BaseModel):
username: str
password: str
使用FastAPI的Form类
在FastAPI中,使用Form
类来声明路由函数参数,以便FastAPI可以自动解析表单数据。
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
在这个例子中,username
和password
是表单字段,它们都被声明为字符串类型,并且都使用了Form
类来获取它们的值。
使用Pydantic模型处理表单数据
如果直接使用Pydantic模型来处理表单数据,你可以这样做:
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class LoginForm(BaseModel):
username: str
password: str
@app.post("/login/")
async def login(form_data: LoginForm = Form(...)):
return {"username": form_data.username}
在这个例子中,LoginForm
是一个Pydantic模型,它定义了表单数据的结构。在路由函数中,form_data
参数被声明为LoginForm
类型,并且使用了Form
类来获取表单数据。
文件上传
处理文件上传,可以使用FastAPI的UploadFile
类。
from fastapi import FastAPI, UploadFile, File
app = FastAPI()
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
contents = await file.read()
# 这里可以处理文件内容
return {"filename": file.filename}
在这个例子中,file
参数被声明为UploadFile
类型,并且使用了File
类来获取上传的文件。UploadFile
对象有一个read
方法,可以用来读取上传文件的内容。