FastAPI 中的 Pydantic 的作用
FastAPI 中的 Pydantic 的作用
Pydantic
在FastAPI里扮演的角色 ≈ Spring Boot开发时 [Jackson
+ Bean
Validation
+ Lombok
]
三件套合体后的效果——
负责把 [收到的原始字节
] → [Java Bean
] → [校验
] → [序列化回JSON
]
class UserOut(BaseModel):id:intname:str
这里面python继承了 BaseModel
python定义一个类的语法如下:
class Parent:def __init__(self, name, age):self.name = nameself.age = agedef say(self):print("I am Parent")
python继承一个类的语法如下,用括号继承:
class Child(Parent):pass
在FastAPI 中获取请求参数
把需要的东西声明成路径参数
、查询参数
、请求体
,FastAPI 会自动注入。
-
路径参数
from fastapi import FastAPIapp = FastAPI()@app.get("/user/{id}") def get(id:int):return {"id":id}
-
查询参数
非路径参数就是请求参数
@app.get("/search") def search(q:str, page:int = 0):return {"q":q, "page":page}
-
请求体
from pydantic import BaseModelclass UserDto(BaseModel):name:strage:str@app.post("/user") def create(dto:UserDto): # 直接声明模型,FastAPI自动反序列化+校验return {"user":dto}
-
混合使用:
路径 + 查询 + 请求体
@app.put("/item/{item_id}") def update_item(item_id: int,q:str = None,payload: UserDto = None ):return {"id":item_id,"q":q, "payload":payload}