FastAPI中基于表单的输入验证和处理
FastAPI 是一种现代、快速(高性能)的 Web 框架,用于通过 Python 开发 API。在 FastAPI 中,可以使用表单来接收用户的输入数据。表单验证和处理可以通过 Pydantic 模型完成,Pydantic 是 FastAPI 默认的数据验证和解析库。
下面是一个使用 FastAPI 进行基于表单的输入验证和处理的示例:
首先,需要安装 FastAPI 和 Pydantic:
$ pip install fastapi[all] $ pip install pydantic
接下来,创建一个名为 main.py 的 Python 文件,并在其中编写以下代码:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
@app.post("/items/")
async def create_item(item: Item):
item_dict = item.dict()
# 对接收到的表单数据进行处理
if item.is_offer:
item_dict.update({"message": "特价商品"})
else:
item_dict.update({"message": "普通商品"})
return item_dict
在上述代码中,我们首先导入了 FastAPI 和 Pydantic 的相关模块。然后,我们创建了一个 FastAPI 应用程序实例 app。
接着,我们定义了一个名为 Item 的 Pydantic 模型,用于描述我们期望从表单中接收的数据。在本例中,我们期望每个表单项都具有一个 name 字段,一个 price 字段和一个可选的 is_offer 字段。is_offer 字段的默认值为 None。
然后,我们定义了一个名为 create_item 的路由函数,用于处理 POST 请求,并接收一个 item 参数,类型为 Item。在这个函数中,我们可以直接将接收到的表单数据作为一个 Item 对象进行处理。
函数中的代码将接收到的表单数据转换为一个字典 item_dict,然后根据 is_offer 字段的值进行处理。如果 is_offer 的值为 True,则在 item_dict 中添加一个 "message" 键,并将其值设置为 "特价商品";否则,将 "message" 的值设置为 "普通商品"。
最后,我们返回处理后的字典数据。
接下来,运行 FastAPI 应用程序:
$ uvicorn main:app --reload
现在,我们可以使用任意的 HTTP 请求发送一个包含表单数据的请求到 http://localhost:8000/items/。例如,使用 curl 命令来发送 POST 请求:
$ curl -X POST "http://localhost:8000/items/" -H "Content-Type: application/json" -d '{"name": "笔记本电脑", "price": 1000, "is_offer": true}'
或者,使用 Postman 或类似的工具来发送请求。
FastAPI 将验证接收到的表单数据是否符合 Item 模型的定义。如果数据有效,则将其传递给 create_item 函数进行处理,并返回处理后的结果。
以上就是使用 FastAPI 进行基于表单的输入验证和处理的示例。FastAPI 提供了强大的型式化数据验证和解析功能,可以帮助开发者更简单地处理和验证用户的输入数据。
