Pydantic で無効なフィールドを禁止する
2563 ワード
結論から
from pydantic import BaseModel, ValidationError, Extra
class Model(BaseModel, extra=Extra.forbid):
a: str
try:
Model(a='spam', b='oh no')
except ValidationError as e:
print(e)
"""
1 validation error for Model
b
extra fields not permitted (type=value_error.extra)
"""
これにより、追加のフィールドを無効化することができ、タイポを抑制できる。APIに無効な入力が与えられた時にエラーが吐けるので便利。
JSON Schema で言うところの additionalProperty: false
プログラムの健全性を保つ上で、通常、設定すべき項目だと思うが、フィールドが多く、何度も利用するクラスの場合、バリデーションが重くなることがあるので注意。
参考
(おまけ) バリデーションが重いので実際の実装を見に行く
ココらへんが遅いことはわかった。setの生成・処理が遅いのだろうか。
私はFastAPIの内部でPydanticを使っていたので、非同期処理に特化してて、何かしらの実装で高速化されているFastAPIと比較してpure Pythonによるフィールドチェックがボトルネックになることはありうる。
Author And Source
この問題について(Pydantic で無効なフィールドを禁止する), 我々は、より多くの情報をここで見つけました https://zenn.dev/ttttkkkkk/articles/ca11618e832495著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol