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

发布时间: 2018-12-22 10:26:16 作者: 大象笔记

之前记录过 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 的时候,这样做非常方便去添加一些我们业务相关的自定义校验规则。

我是一名山东烟台的开发者,联系作者