FastAPI基础-数据模型示例

2023-05-07 20:55:04 浏览数 (3)

如何使用数据模型来验证和序列化输入和输出数据:

代码语言:javascript复制
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str
    password: str
    friends: List[int] = []

class CreateUserRequest(BaseModel):
    name: str
    email: str
    password: str
    friends: List[int] = []

class CreateUserResponse(BaseModel):
    id: int
    name: str
    email: str
    friends: List[int] = []

@app.post("/users", response_model=CreateUserResponse)
async def create_user(request: CreateUserRequest):
    """
    Creates a new user.

    - **request**: The information of the user to create.
    """
    user_id = generate_user_id()
    user = User(id=user_id, **request.dict(), password=hash_password(request.password))
    save_user(user)
    return CreateUserResponse(id=user_id, name=user.name, email=user.email, friends=user.friends)

@app.get("/users/{user_id}", response_model=User)
async def get_user(user_id: int):
    """
    Returns the information of a user.

    - **user_id**: The ID of the user to return.
    """
    user = get_user_by_id(user_id)
    return user

在上面的代码中,我们定义了三个数据模型UserCreateUserRequestCreateUserResponseUser模型表示用户的完整信息,CreateUserRequest模型表示创建用户所需的信息,CreateUserResponse模型表示创建用户后返回的信息。

我们使用CreateUserRequest模型来验证输入数据,并在create_user函数中使用它来创建一个新的User对象。我们还使用CreateUserResponse模型来序列化输出数据,并在create_user函数中使用它来返回新用户的信息。

get_user函数中,我们使用User模型来验证输出数据,并将其返回给客户端。

通过使用数据模型,我们可以轻松地进行数据验证和序列化,以及自动生成文档。这使得我们的代码更加健壮,易于维护和扩展。

0 人点赞