FastAPI 表单数据
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,与 Python 3.6+ 类型提示一起使用。它是一个轻量级的框架,但功能强大,能够处理各种类型的请求数据,包括 JSON、表单数据和文件等。在本文中,我们将重点讨论如何在 FastAPI 中处理表单数据。
什么是表单数据?
表单数据通常指的是通过 HTML 表单提交的数据。这些数据通常包含键值对,其中键是表单字段的名称,值是用户输入的数据。表单数据可以通过多种方式提交,最常见的是 application/x-www-form-urlencoded
和 multipart/form-data
编码类型。
在 FastAPI 中接收表单数据
在 FastAPI 中,你可以使用 Pydantic 模型来定义和接收表单数据。下面是一个简单的例子,展示了如何接收一个包含用户名和密码的表单数据:
from fastapi import FastAPI, Form
from pydantic import BaseModel
app = FastAPI()
class UserForm(BaseModel):
username: str
password: str
@app.post("/login/")
async def login(user_form: UserForm = Form(...)):
return {"username": user_form.username, "password": user_form.password}
在这个例子中,我们定义了一个 UserForm
Pydantic 模型,它包含两个字段:username
和 password
。在路由函数 login
中,我们使用 Form
参数将表单数据绑定到 UserForm
模型上。Form
参数的 ...
表示这是一个必需的参数。
处理文件上传
FastAPI 也支持处理文件上传,这通常是通过 multipart/form-data
编码类型实现的。下面是一个例子,展示了如何接收一个包含文件上传的表单:
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/upload/")
async def upload_file(file: UploadFile = File(...)):
file_content = await file.read()
return {"filename": file.filename, "content": file_content}
在这个例子中,我们使用 File
参数来接收上传的文件。UploadFile
是 FastAPI 提供的一个特殊类型,它表示一个上传的文件。await file.read()
用于读取文件内容。
总结
FastAPI 是一个功能强大的 Web 框架,能够轻松处理各种类型的请求数据,包括表单数据和文件上传。通过使用 Pydantic 模型和 FastAPI 提供的特殊参数,你可以轻松地定义和接收表单数据,以及处理文件上传。这些特性使得 FastAPI 成为构建现代 Web 应用程序的理想选择。