• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

基于JSON类型返回的API接口如果做输出校验?

php 搞代码 4年前 (2022-01-25) 39次浏览 已收录 0个评论
文章目录[隐藏]

现在在开发一个api接口,返回数据是json格式的,前端输入有validator校验器可以校验数据是否合法,那后台输出的返回呢?只能用phpunit的单元测试方法测试字段是否完全返回吗?有没有什么比较简单的输出校验框架可以用

回复内容:

现在在开发一个api接口,返回数据是json格式的,前端输入有validator校验器可以校验数据是否合法,那后台输出的返回呢?只能用phpunit的单元测试方法测试字段是否完全返回吗?有没有什么比较简单的输出校验框架可以用

后台写一个验证类吧。

给你一个做参考

<code><?php/** * 验证类 *  * @package */Class Validate{    /**     * 存放验证信息     *     * @var array     */    public $validateparam = array();    /**     * 验证规则     *     * @var array     */    private $validator = array(        "email"=>'/^([.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.[a-zA-Z0-9_-])+/',        "phone"=>'/^(([0-9]{2,3})|([0-9]{3}-))?((0[0-9]{2,3})|0[0-9]{2,3}-)?[1-9][0-9]{6,7}(-[0-9]{1,4})?$/',        "mobile"=>'/^1[0-9]{10}$/',        "url"=>'/^http:(\\/){2}[A-Za-z0-9]+.[A-Za-z0-9]+[\\/=?%-&_~`@\\[\\]\':+!]*([^\"\"])*$/',        "currency"=>'/^[0-9]+(\\.[0-9]+)?$/',        "number"=>'/^[0-9]+$/',        "zip"=>'/^[0-9][0-9]{5}$/',        "qq"=>'/^[1-9][0-9]{4,8}$/',        "integer"=>'/^[-+]?[0-9]+$/',        "integerpositive"=>'/^[+]?[0-9]+$/',        "double"=>'/^[-+]?[0-9]+(\\.[0-9]+)?$/',        "doublepositive"=>'/^[+]?[0-9]+(\\.[0-9]+)?$/',        "english"=>'/^[A-Za-z]+$/',        "chinese"=>'/^[\x80-\xff]+$/',        "username"=>'/^[\\w]{3,}$/',        "nochinese"=>'/^[A-Za-z0-9_-]+$/',    );    /**     * 验证数组中的值     *     * <code>     * //使用示例     * <?php     *  require("commonvalidate.class.php");     *    $a = new CommonValidate();     *    $a->setValidate("344d",true,"","不可以为空");     *    $a->setValidate("fdsfsfd",true,"Email","请填写正确的EMAIL");     *    echo $a->validate();     *     *  //显示结果:     *  请填写正确的EMAIL     * ? >     * </code>     *      * @param      * @return string 字符串类型的返回结果     */    public function validate(){        if (!is_array($this->validateparam)){            return false;        }        foreach($this->validateparam a<strong style="color:transparent">本&文来源gao@daima#com搞(%代@#码网@</strong><textarea>搞gaodaima代码</textarea>s $k=>$v){            $v['validator'] = strtolower($v['validator']);            if ($v['require'] == ""){                $v['require'] = false;            }            if ($v['input'] == "" && $v['require'] == "true"){                                $this->validateparam[$k]['result'] = false;            }else{                $this->validateparam[$k]['result'] = true;            }            if ($this->validateparam[$k]['result'] && $v['input'] != ""){                switch($v['validator']){                    case "custom":                        $this->validateparam[$k]['result'] = $this->check($v['input'],$v['regexp']);                        break;                    case "compare":                        if ($v['operator'] != ""){                            eval("\$result = '" . $v['input'] . "'" . $v['operator'] . "'" . $v['to'] . "'" . ";" );                            $this->validateparam[$k]['result'] = $result;                            }                        break;                    case "length":                        //判断编码取字符串长度                        $input_encode = mb_detect_encoding($v['input'],array('UTF-8','GBK','ASCII',));                        $input_length = mb_strlen($v['input'],$input_encode);                        if (intval($v['min']) >= 0 && intval($v['max']) > intval($v['min'])){                            $this->validateparam[$k]['result'] = ($input_length >= intval($v['min']) && $input_length = 0 && intval($v['max']) validateparam[$k]['result'] = ($input_length == intval($v['min']));                        }                        break;                    case "range":                        if (intval($v['min']) >= 0 && intval($v['max']) > intval($v['min'])){                            $this->validateparam[$k]['result'] = (intval($v['input']) >= intval($v['min']) && intval($v['input']) = 0 && intval($v['max']) validateparam[$k]['result'] = (intval($v['input']) == intval($v['min']));                        }                        break;                    default:                        $this->validateparam[$k]['result'] = $this->check($v['input'],$this->validator[$v['validator']]);                }            }        }        $error = $this->getError();        $this->validateparam = array();        return $error;    }    /**     * 正则表达式运算     *     * @param string $str 验证字符串     * @param string $validator 验证规则     * @return bool 布尔类型的返回结果     */    private function check($str='',$validator=''){        if ($str != "" && $validator != ""){            if (preg_match($validator,$str)){                return true;            }            else{                return false;            }        }        return true;    }        /**     * 需要验证的内容     *     * @param array $validateparam array("input"=>"","require"=>"","validator"=>"","regexp"=>"","operator"=>"","to"=>"","min"=>"","max"=>"",message=>"")     * input要验证的值     * require是否必填,true是必填false是可选     * validator验证的类型:     * 其中Compare,Custom,Length,Range比较特殊。     * Compare是用来比较2个字符串或数字,operator和to用来配合使用,operator是比较的操作符(==,>,=,validateparam = array_merge($this->validateparam,array($validateparam));    }    /**     * 得到验证的错误信息     *     * @param      * @return string 字符串类型的返回结果     */    private function getError(){        foreach($this->validateparam as $k=>$v){            if ($v['result'] == false){                return $v['message'];            }        }        return null;    }}?></code>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:基于JSON类型返回的API接口如果做输出校验?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址