keystone中的参数校验

来源:互联网 发布:网络预约汽车运输证 编辑:程序博客网 时间:2024/06/05 06:07

keystone中无论是创建用户、更新用户还是其它操作,在controller方法的入口处,一般首先对入参进行基本校验。
keystone封装了一个通用的类SchemaValidator,位于keystone\common\validation\validators模块中。

代码如下所示:

def create_user(self, request, user):    validation.lazy_validate(schema.user_create, user)def lazy_validate(request_body_schema, resource_to_validate)    schema_validator = validattors.SchemaValidator(request_body_schema)    schema_validator.validate(resource_to_validate)传入的参数:schema.user_create  user_create = {    'type': 'object',    'properties': _user_properties, //表示待校验的property, 引用_user_properties(创建用户的json体中)    'required': ['name'],//json体中,必须包含那个(些)property    'minProperties': 1,//json体中,至少包含一个property    'options': {//不懂        'type': 'object'        },    'additionalProperties': True//是否允许有额外的property,如果为False则json体只能是_user_properties子集}_user_properties = {    'default_project_id': validation.nullable(parameter_types.id_string),//表示项目Id也可以为null    'domain_id': parameter_types.id_string,//string类型,最小长度1最大长度64,正则匹配    'enabled': parameter_types.boolean,//必须是bolean型    'name': _identity_name,//String类型,最小长度1,正则匹配    'password': {        'type': ['string', 'null']//String类型,或者为null    },    'options': ro.USER_OPTIONS_REGISTRY.json_schema}parameter_types.id_string:id_string = {    'type': 'string',    'minLength': 1,    'maxLength': 64,    'pattern': '^[a-zA-Z0-9-]+$'}_identity_name = { 'type': 'string', 'minLength': 1, 'pattern': '[\S]+'}

只支持对string、boolean类型的数值检查。如果是整型,json体中,value也需要写成字符串的形式。

原创粉丝点击