【FastAPI】4.返回数据类型

FastAPI 返回数据类型

@app.get()@app.post@app.put@app.delete 四个操作函数,均可以添加返回类型模型
FastAPI在注解中添加response_model,其功能如下

  • 类型转换,FastAPI会根据返回类型模型,将返回数据进行类型转换,并返回给客户端
  • 文档生成,FastAPI会根据返回类型模型,生成文档
  • 类型验证,FastAPI会根据返回类型模型,对返回数据进行类型验证,并返回给客户端
@app.get("/item", response_model=Item)
def get_item() ->Any:
    mock_item = Item(name="Foo", price=42, description="The pretender", is_offer=True)
  • 上述例子中,response_model=Item指定了返回类型模型为Item,FastAPI会根据Item模型,将返回数据进行类型转换,并返回给客户端
  • 虽然函数的返回值是Any,但服务返回的是response_model,FastAPI会根据response_model,将返回数据进行类型转换,并返回给客户端
class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None
    description: str = None
    img: Image | None = None
    tags: set[str] | None = set()

@app.get("/items", response_model=list[Item])
def get_items():
    return [
        {"name": "Sherlock",
         "price": 22,
         "description": "The pretender",
         "is_offer": True
         },
        {
            "name": "Foo",
            "price": 42,
            "description": "The pretender",
            "is_offer": True,
        }
    ]
  • 上述例子中,response_model=list[Item]指定了返回类型模型为list[Item],FastAPI会根据list[Item]模型,将返回数据进行类型转换,并返回给客户端
  • 函数的返回值是一个数组,数组会自动映射为返回类的对象,如果返回的属性不在数组元素中,则会自动赋null值
class UserIn(BaseModel):
    user_name: str
    user_password:str
    user_full_name:str

class UserOut(BaseModel):
    user_name:str
    user_full_name:str

@app.post("/register",response_model=UserOut)
def register_item(user:UserIn) -> UserIn:
    return user
  • 上述例子中,入参对象与返回对象相同,但是定义了response_model=UserOut,返回时不会传递user_password的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值