fastapi 封装响应结构体
时间: 2023-07-19 16:35:41 浏览: 66
在 FastAPI 中,我们可以使用 Pydantic 库来定义响应结构体。具体步骤如下:
1. 导入 Pydantic 中的 BaseModel 类:
```python
from pydantic import BaseModel
```
2. 定义一个继承自 BaseModel 的响应结构体类,例如:
```python
class UserResponse(BaseModel):
name: str
age: int
email: str
```
在这个例子中,我们定义了一个名为 UserResponse 的响应结构体类,它包含了三个字段:name、age 和 email。
3. 在路由函数中使用响应结构体类:
```python
@app.get("/user/{user_id}", response_model=UserResponse)
async def read_user(user_id: int):
user = fetch_user_from_database(user_id)
return user
```
在这个例子中,我们使用了 @app.get 装饰器来定义一个 GET 请求的路由函数,它接收一个名为 user_id 的整型参数。在函数体中,我们调用了 fetch_user_from_database 函数来获取用户信息,并将其作为响应返回。由于我们希望返回的响应数据结构符合 UserResponse 类的定义,因此我们通过 response_model 参数来指定响应结构体类。
如果 fetch_user_from_database 函数返回的数据结构与 UserResponse 类的定义不一致,FastAPI 会自动进行数据验证和转换。如果验证或转换失败,FastAPI 会返回一个带有详细错误信息的 HTTP 422 响应。
通过使用 Pydantic 定义响应结构体类,我们可以让代码更加清晰易懂,同时还能提高代码的可维护性和可扩展性。