FastAPI(13)- 詳解 Fields,針對 Pydantic Model 內部字段添加額外校驗和元數據


前言

  • 前面講了 Query、Path、Body,均可以對某個字段進行額外的校驗和添加元數據
  • 這一篇來講 Fields,它針對 Pydantic Model 內部字段進行額外的校驗和添加元數據

 

Fields

  • 它是 Pydantic 提供的方法,並不是 FastAPi 提供的哦
  • 該方法返回了一個實例對象,是 Pydantic 中 FieldInfo 類的實例對象

 

重點

FastAPI 提供的 Query、Path等其他公共 Param 類和 Body 類,都是 Pydantic 的 FieldInfo 類的子類

Query、Path 繼承 Param,Param 繼承 FieldInfo

 

 

Body 直接繼承 FieldInfo

 

簡單的栗子

from typing import Optional

import uvicorn
from fastapi import FastAPI, Body
from pydantic import Field, BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    description: Optional[str] = Field(
        default=None,
        title="標題",
        description="描述",
        max_length=5
    )
    price: float = Field(..., gt=0, description="需要大於0")
    tax: Optional[float] = None


@app.post("/items/{item_id}")
async def update_item(item_id: int, item: Item = Body(..., embed=True)):
    results = {"item_id": item_id, "item": item}
    return results


if __name__ == "__main__":
    uvicorn.run(app="11_fields:app", host="127.0.0.1", port=8080, reload=True, debug=True)

 

正確傳參的請求結果 

 

校驗失敗的請求結果

 

查看 Swagger API 文檔 

JSON Schema 對加了 Fields 的字段會有詳細的描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM