RPC接口date类型参数校验时如何处理前端传递的空字符串类型数据
对于rpc接口使用use_args 校验参数的时候,我们常常需要校验date这种日期类型参数,但有时候作为非必传参数,前端给我们传递的参数会是一个空字符串,这时候采用fields.Date()进行校验时通常回产生400 报错,显示参数传递错误:‘invalid’: ‘Not a valid date.’,
这是由于fields.py中对于传递的参数做校验时无法反序列化空字符串导致报错
要解决这个问题,我们可以重写一下Date 这个类,加上一层判断
class BlankableDate(fields.Date):
"""
可以将空字符串反序列化为 None 的日期类型
"""
def _deserialize(self, value, attr, data):
if value == "":
return None
else:
return super()._deserialize(value, attr, data)
这样再做参数校验时,直接使用定义后的模型类做校验