欢迎访问宙启技术站
智能推送

FastAPI中基于表单的输入验证和处理

发布时间:2023-12-15 22:59:12

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 提供了强大的型式化数据验证和解析功能,可以帮助开发者更简单地处理和验证用户的输入数据。