UNPKG

axios-api-query

Version:

一个javascript通过api对象模型描述自动生成axios请求实例的插件

52 lines (50 loc) 2.05 kB
// 验证插件 // @ts-ignore import validator from 'vdjs'; import _isNil from 'lodash/isNil'; import _isNaN from 'lodash/isNaN'; import _isEmpty from 'lodash/isEmpty'; /** * @desc 验证函数 * @param {*} data 待验证数据 * @param {*} constraints 数据限制要求 * @param {Boolean} [isOne=false] 检查到错误字段即停止,可选,默认false * @returns {{}} {status: '检查是否失败,如果存在字段检查不通过,则返回true,反之false', msg: '所有验证信息结果,对象,返回类型数组'} * @example * data:{name: 'xm', nickname: 'xmm', password: '123'} * constraints:{name: {required: true, msg: '名称不能为空'},password: {required: true, not: '123456', min: 6, msg: 'password验证不通过'}} */ export default function validate(data = {}, constraints = {}, isOne = false) { /** * @desc * valid.fails()检查是否失败,如果存在字段检查不通过,则返回true,反之false * valid.all(true) 返回所有验证信息结果,对象;如果需要返回数组 isArr 为 true 即可。 * {status: true,msg: ["password验证不通过", "两次输入密码不一致"]} * @type {object} */ const valid = validator.validate(data, constraints, isOne); return { status: valid.fails(), msg: valid.all(true) }; } // URL地址防注入 针对查询参数 validator.pushRule('sqlXss', function(val = '', rval = true) { if (rval) { const re = /select|update|delete|truncate|join|union|exec|insert|drop|count|script|<|>|'|"|;/gi; const status = re.test(val); if (status) { return false; } } return true; }); // 检查 value 是否是 null 或者 undefined validator.pushRule('isNil', function(val = '') { return !_isNil(val); }); // 检查 value 是否是 NaN validator.pushRule('isNaN', function(val = '') { return !_isNaN(val); }); // 检查 value 是否为一个空对象,集合,映射或者set validator.pushRule('isEmpty', function(val = '') { return !_isEmpty(val); });