一、前置说明
1、总体目录
2、相关回顾
3、本节目标
- 阐述
pyparamvalidate
重构背景和需求分析。
二、重构背景
pyparamvalidate 已经实现了参数校验的功能,但是不能对获取到的字典内部的数据进行校验,如下:
from pyparamvalidate import ParameterValidator
@ParameterValidator("name").is_string().is_not_empty()
@ParameterValidator("age").is_int().is_positive()
@ParameterValidator("gender").is_allowed_value(["male", "female"])
@ParameterValidator("profile").is_similar_dict(reference_dict={'address': ''})
def example_function(name, age, gender='male', **kwargs):
profile = kwargs.get("profile")
address = profile.get("address")
if not address:
raise ValueError("address is required")
return name, age, gender, profile
目前无法校验:示例中的 address
不能为空。
三、需求分析
校验行为不仅仅出现在对参数的校验上,因此要将 validator
校验器从 ParameterValidator
中抽离出来,适用更多场景。
- 不能改变
ParameterValidator
的使用方式。 validator
校验器,方便调用、提供清晰的错误信息。validator
校验器,支持 return 校验之后的值。
三、后置说明
1、要点小结
- 校验是一个通用行为,不仅出现在参数校验上。
- 可以将
validator
校验器模块化。
2、下节准备
- 将
validator
校验器从ParameterValidator
中抽离出来