FastAPI – 在请求体中接收对象列表
在本文中,我们将介绍在FastAPI中如何接收包含对象列表的请求体,并提供一些示例来说明其用法。
阅读更多:FastAPI 教程
FastAPI简介
FastAPI是一个现代化的,高性能的Web框架,用于构建API。它具有以下特点:
– 通过使用类型注解和Pydantic模型自动验证请求和响应的数据。
– 非常高效的性能,得益于基于Starlette的异步支持。
– 自动生成交互式API文档,支持自动化测试和验证。
– 具备自动化的请求参数解析和验证,错误处理和文档生成等功能。
在请求体中接收对象列表
有时,我们需要在请求中传递一个对象列表,例如一次性提交多个用户注册信息。FastAPI提供了一个简单而强大的功能来处理这些情况。
首先,我们需要定义一个数据模型来表示一个对象的结构。例如,我们有一个用户模型如下所示:
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
email: str
然后,我们可以使用该模型来创建一个请求体参数。通过将List[User]
作为类型注解,我们告诉FastAPI接收一个包含多个User
对象的列表。
from typing import List
from fastapi import FastAPI
app = FastAPI()
@app.post("/users")
async def create_users(users: List[User]):
for user in users:
print(user)
return {"message": "Users created"}
在上述示例中,我们使用/users
路径定义了一个POST
请求处理程序。create_users
函数的参数users
即为接收的对象列表。
当我们向该API端点发送一个包含用户对象的列表的请求时,FastAPI自动将请求体中的JSON数据解析成List[User]
对象,并通过参数传递给处理程序。
以下是一个示例请求体的JSON数据:
[
{"id": 1, "name": "Alice", "email": "alice@example.com"},
{"id": 2, "name": "Bob", "email": "bob@example.com"}
]
这样,我们就可以在处理程序中遍历这个用户列表,并对每个用户进行操作。
请求体中的数据验证
FastAPI提供了强大的数据验证机制,它能够自动根据定义的数据模型对请求体中的数据进行校验。
在上面的示例中,如果请求体中的JSON数据与User
模型定义不匹配,FastAPI会自动返回一个带有错误信息的400响应。
如果我们提交了一个缺少必需字段的用户对象,FastAPI将会返回类似以下的错误信息:
{
"detail": [
{
"loc": [
0,
"email"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}
总结
通过FastAPI,我们可以轻松地在请求体中接收对象列表。只需定义一个数据模型,使用List[User]
作为参数类型注解,并将其传递给请求处理程序即可。
FastAPI提供了强大的数据验证功能,能够自动校验请求体中的数据,并返回明确的错误消息。
使用FastAPI,我们能够以简单而高效的方式构建出功能丰富的API,提供良好的开发体验和卓越的性能。