FastAPI 基礎學習(三) Pydantic 做類型強制檢查


作者:麥克煎蛋   出處:https://www.cnblogs.com/mazhiyong/ 轉載請保留這段聲明,謝謝!

 

FastAPI 基於 PydanticPydantic 主要用來做類型強制檢查。參數賦值,不符合類型要求就會拋出異常。

對於 API 服務,支持類型檢查非常有用,會讓服務更加健壯,也會加快開發速度,因為開發者再也不用自己寫一行一行的做類型檢查。

我們用純粹的,經典的Python來定義數據,用Pydantic來校驗數據。

 

官方文檔地址:https://pydantic-docs.helpmanual.io/

 

一、安裝

pip install pydantic

二、使用

from pydantic import ValidationError

from datetime import datetime
from typing import List
from pydantic import BaseModel

class User(BaseModel):
    id: int
    name = 'jack guo'
    signup_timestamp: datetime = None
    friends: List[int] = []

觀察到:

  • id 要求必須為 int
  • name 要求必須為 str, 且有默認值
  • signup_timestamp 要求為 datetime, 默認值為 None
  • friends 要求為 List,元素類型要求 int, 默認值為 []

使用 User 類:

try:
    User(signup_timestamp='not datetime', friends=[1, 2, 3, 'not number'])
except ValidationError as e:
    print(e.json())

id 沒有默認值,按照預期會報缺失的異常

signup_timestamp 被賦為非 datetime 類型值,按照預期會報異常

friends 索引為 3 的元素被賦值為 str,按照預期也會報異常

執行代碼,驗證是否符合預期。

[
  {
    "loc": [
      "id"
    ],
    "msg": "field required",
    "type": "value_error.missing"
  },
  {
    "loc": [
      "signup_timestamp"
    ],
    "msg": "invalid datetime format",
    "type": "value_error.datetime"
  },
  {
    "loc": [
      "friends",
      3
    ],
    "msg": "value is not a valid integer",
    "type": "type_error.integer"
  }
]

 

參考文章:https://cloud.tencent.com/developer/article/1593589

更復雜的使用和例子可以參考官方文檔。

 


免責聲明!

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



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