FastAPI 如何创建一个能够接受表单或 JSON 请求体的端点

FastAPI 如何创建一个能够接受表单或 JSON 请求体的端点

在本文中,我们将介绍如何使用 FastAPI 创建一个端点,该端点能够接受来自表单或 JSON 请求体的数据。FastAPI 是一个基于 Python 的现代、快速(高性能)的 Web 框架,具有自动交互式文档(使用 Swagger UI 和 ReDoc),并且易于使用。

阅读更多:FastAPI 教程

使用 FastAPI 创建端点

首先,我们需要导入所需的模块和类,用于创建 FastAPI 应用和处理请求的端点。我们还需要使用 Pydantic 模块来定义请求体模型。

from fastapi import FastAPI, Form, Request
from pydantic import BaseModel

然后,我们可以创建 FastAPI 应用实例:

app = FastAPI()

接下来,我们需要定义一个请求体模型,用于验证和解析请求体数据。我们可以使用 Pydantic 中的 BaseModel 类来创建自定义模型。在本例中,我们将创建一个包含表单和 JSON 数据的请求体模型。

class Item(BaseModel):
    name: str
    price: float

然后,我们可以使用 @app.post 装饰器和 async def 语法来定义我们的端点。在函数参数中,我们可以使用 Form 类型注解来指示 FastAPI 使用表单数据。

@app.post("/items/")
async def create_item(item: Item, request: Request, form_data: dict = Form(...)):
    # 处理表单数据
    item_data = {"name": item.name, "price": item.price, "from_form": form_data}
    # 处理 JSON 数据
    json_data = await request.json()
    item_data["from_json"] = json_data
    return item_data

在这个例子中,我们定义了一个名为 create_item 的端点,它接受一个名为 item 的请求体模型对象、一个名为 request 的请求对象和一个名为 form_data 的表单数据对象。

在函数体内,我们可以分别处理表单数据和 JSON 数据。我们可以将表单数据存储在一个字典中,并将其作为请求体模型对象的一部分返回。我们还可以使用 await request.json() 方法来获取并处理 JSON 数据,然后将其存储在同一字典中。

返回的字典包含了来自表单和 JSON 数据的信息,因此客户端可以根据需要选择使用哪种数据格式。

测试端点

现在我们可以使用 FastAPI 自带的交互式文档来测试我们的端点。启动 FastAPI 应用,并访问 http://localhost:8000/docshttp://localhost:8000/redoc 来打开交互式文档页面。

在文档页面上,可以找到我们之前创建的 /items/ 端点。可以使用表单和 JSON 数据进行测试。

总结

本文介绍了如何使用 FastAPI 创建一个能够接受表单或 JSON 请求体的端点。我们学习了导入所需的模块和类,创建 FastAPI 应用实例,定义请求体模型,以及编写处理请求的端点函数。我们还了解了如何使用 FastAPI 的交互式文档来测试我们的端点。

FastAPI 是一个功能强大且易于使用的 Web 框架,它具有高性能和自动化文档生成等优点,适用于构建 Web API 和其他 Web 应用程序。无论是处理表单数据还是 JSON 数据,FastAPI 都提供了灵活且高效的解决方案,让开发者能够轻松创建强大的端点。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程