返回

FastAPI 中 Requests Body 的使用

后端

请求体的作用

请求体通常用于向服务器发送复杂的数据,例如 JSON 对象、XML 文档或二进制数据。在 FastAPI 中,请求体可以被用来传递表单数据、JSON 数据或其他自定义数据结构。

使用 FastAPI 处理请求体

在 FastAPI 中,我们可以使用 request.body 来访问请求体的内容。request.body 是一个二进制字符串,我们可以使用 json.loads() 函数将其转换为 JSON 对象。

from fastapi import FastAPI, Request

app = FastAPI()

@app.post("/endpoint")
async def endpoint(request: Request):
    data = await request.body()
    json_data = json.loads(data)
    # 处理 json_data

需要注意的是,在使用 json.loads() 函数之前,我们需要确保请求体的内容确实是 JSON 格式的。否则,json.loads() 函数可能会抛出 JSONDecodeError 异常。

使用数据模型处理请求体

FastAPI 还支持使用数据模型来处理请求体。数据模型可以帮助我们对请求体中的数据进行验证和类型转换。

from fastapi import FastAPI, Request, Body

app = FastAPI()

class MyModel:
    name: str
    age: int

@app.post("/endpoint")
async def endpoint(model: MyModel = Body(...)):
    # 处理 model

在上面的代码中,我们定义了一个名为 MyModel 的数据模型,其中包含了 nameage 两个字段。当我们使用 Body(...) 参数注解时,FastAPI 会自动将请求体中的数据转换为 MyModel 实例。

最佳实践

使用 JSON 或 XML 格式

在 FastAPI 中,推荐使用 JSON 或 XML 格式来传递请求体数据。这两种格式都是标准格式,被广泛支持。

使用数据模型进行数据验证

使用数据模型可以帮助我们对请求体中的数据进行验证,确保数据格式正确、类型正确。

使用默认值和可选字段

FastAPI 允许我们在数据模型中定义默认值和可选字段。这可以帮助我们处理不完整或缺失的数据。

使用 request.form() 方法处理表单数据

如果我们要处理表单数据,我们可以使用 request.form() 方法来获取表单中的数据。

from fastapi import FastAPI, Request

app = FastAPI()

@app.post("/endpoint")
async def endpoint(request: Request):
    data = await request.form()
    # 处理 data

结语

通过请求体我们能将数据传送到服务器中,同时还能对其进行验证和转换。因此,它在 FastAPI 中是一个非常有用的功能。