FastAPI-3-使用Pydantic声明请求体
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel  # 用来声明请求体的库:1.提供运行时类型信息;2.返回友好错误提示
app = FastAPI()
class Item(BaseModel):    
    name: str
    price: float
    is_offer: Optional[bool] = None  # 可选参数,不传参数时为None,如果有值则为bool
@app.get("/")
def read_root():
    return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):   # 路径中需要传item_id,请求体中传的参数符合Item模板
    return {"item_name": item.name, "item_id": item_id}回到前面的代码示例,FastAPI 将会:
- 校验 GET和PUT请求的路径中是否含有item_id。
- 校验 GET和PUT请求中的item_id是否为int类型。- 如果不是,客户端将会收到清晰有用的错误信息。
 
- 检查 GET请求中是否有命名为q的可选查询参数(比如http://127.0.0.1:8000/items/foo?q=somequery)。- 因为 q被声明为= None,所以它是可选的。
- 如果没有 None它将会是必需的 (如PUT例子中的请求体)。
 
- 因为 
- 对于访问 /items/{item_id}的PUT请求,将请求体读取为 JSON 并:- 检查是否有必需属性 name并且值为str类型 。
- 检查是否有必需属性 price并且值为float类型。
- 检查是否有可选属性 is_offer, 如果有的话值应该为bool类型。
- 以上过程对于多层嵌套的 JSON 对象同样也会执行
 
- 检查是否有必需属性 
- 自动对 JSON 进行转换或转换成 JSON。
- 通过 OpenAPI 文档来记录所有内容,可被用于:
- 交互式文档系统
- 许多编程语言的客户端代码自动生成系统
 
- 直接提供 2 种交互式文档 web 界面。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号