作者:麥克煎蛋 出處:https://www.cnblogs.com/mazhiyong/ 轉載請保留這段聲明,謝謝!
FastAPI 基於 Pydantic
,Pydantic
主要用來做類型強制檢查。參數賦值,不符合類型要求就會拋出異常。
對於 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
更復雜的使用和例子可以參考官方文檔。