# Field验证方式
from enum import Enum
from fastapi import FastAPI
import uvicorn
import fastapi_cdn_host
from pydantic import BaseModel, Field, field_validator
app = FastAPI()
# 加上这个,不然docs界面打不开
fastapi_cdn_host.patch_docs(app)
class User(BaseModel):
name: str = Field(default="吕布")
age: int = Field(...) # 必填
@app.post("/users/")
def create_user(user: User):
return user
class Product(BaseModel):
price: float = Field(..., gt=0, le=100, description="价格")
@app.post("/products/")
def create_product(product: Product):
return product
class Account(BaseModel):
username: str = Field(..., min_length=3, max_length=20)
password: str = Field(..., pattern=r'^\w{6,}')
@app.post("/accounts/")
def create_account(account: Account):
return account
class Item(BaseModel):
name: str = Field(..., title="商品名称", description="必填,长度不要超过50字符", example="手机")
@app.post("/items/")
def create_item(item: Item):
return item
class User2(BaseModel):
email: str
@field_validator("email")
def validate_email(cls, v):
if '@' not in v:
raise ValueError("邮箱格式错误")
return v
@app.post("/users2/")
def create_user2(users2: User2):
return users2
class Order(BaseModel):
items: list = Field(..., min_items=1)
address: str = Field(..., description="配送地址")
@app.post("/orders/")
def create_order(order: Order):
return order
class Status(str, Enum):
ACTIVE = "active"
INACTIVE = "inactive"
class Task(BaseModel):
status: Status = Field(default=Status.ACTIVE)
@app.post("/tasks/")
def create_task():
return Task()
if __name__ == "__main__":
uvicorn.run('main10:app', host='127.0.0.1', port=8000, reload=True)
3、Field验证方式
最新推荐文章于 2025-11-29 16:24:14 发布
2万+

被折叠的 条评论
为什么被折叠?



