使用 Laravel Validator 进行 API 的参数校验

文章目录

    之前记录过 Laravel Form 表单的数据校验, 但是大部分时间我是在写 API 给前端调用。

    如果能够使用 Laravel 的 Validator 来进行 API 的数据校验,将节省我大量的时间。

    测试了一下,确实可以,而且非常方便使用。

    以下为我创建的一个 API Validator 的 VIM Code Snippet

    $rsp = ['err_code' => 0, 'err_msg' => 'OK',];
    $input = $request->all();
    
    $rules = [
    	'name' => 'required',
    	'person_tel' =>'required|regex:/^1[0-9]{10}$/',
    	'code' => 'required|digits:6',
    ];
    
    $messages = [
    	'name' => '请填写公司名称',
    	'person_tel' => '请填写正确的手机号',
    	'code' => '请填写正确的验证码',
    ];
    
    $validator = Validator::make($input, $rules, $messages);
    $validator->after(function ($validator) use ($request) {
    	$redis_code = Redis::get(env('APP_NAME').'sms'.$request->get('person_tel'));
    	if ($redis_code != $request->get('code')) {
    		$validator->errors()->add('code', '验证码错误');
    	}
    });
    
    if ($validator->fails()) {
    	$rsp['err_code'] = -1;
    	$rsp['err_msg'] = "数据校验失败";
    	$rsp['data'] = $validator->errors()->all();
    	return response()->json($rsp);
    }
    

    为何要使用 validator after

    after 的调用时机是在主动调用 fails 的时候,这样做非常方便去添加一些我们业务相关的自定义校验规则。

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式