laravel 5.4 中的 API 验证
Posted
技术标签:
【中文标题】laravel 5.4 中的 API 验证【英文标题】:Api validation in laravel 5.4 【发布时间】:2017-12-17 15:23:12 【问题描述】:大家好,我正在开发 API,但我需要在后端验证一些数据,在这种情况下,我们只需要一个邮递员来发送参数和标头。
现在一切正常,但我需要在每个请求中提供更多有用的数据,Laravel 默认有一个验证器Form Request Validation,但我不知道如何在 API 端使用。
我需要将错误消息以 JSON 格式发送给 Postman。
我找到了两个选项,一个是在控制器中进行验证,但代码似乎很多,另一个是 php artisan make:request StoreObjectPost 然后导入请求进入控制器并更改 store 方法的请求,你推荐哪一个,Ty!
【问题讨论】:
【参考方案1】:您可以像这样自己实例化验证器:
$validator = Validator::make($request->all(), [
'name' => 'min:5'
]);
// then, if it fails, return the error messages in JSON format
if ($validator->fails())
return response()->json($validator->messages(), 200);
【讨论】:
【参考方案2】:$PostData = Input::all();
$Validator = Validator::make(array(
'name' => $PostData['name']
), array(
'name' => 'required'
));
if ($Validator->fails()) //if validator is failed
return false;
else
// do some thing here
希望对你有帮助
【讨论】:
【参考方案3】:您应该覆盖FormRequest
的response(array $errors)
方法。
public function response(array $errors)
//Format your error message
if ($this->expectsJson())
return new JsonResponse($errors, 422);
return $this->redirector->to($this->getRedirectUrl())
->withInput($this->except($this->dontFlash))
->withErrors($errors, $this->errorBag);
【讨论】:
【参考方案4】:我更喜欢第二种选择。即使我们对数据使用许多验证或在验证中使用自定义错误消息,我们也将能够保持控制器清洁
【讨论】:
以上是关于laravel 5.4 中的 API 验证的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 + Ajax 等于 401 未经身份验证
如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?
Laravel 5.4:在两个表上具有多重身份验证的 JWT API 一个有效,另一个无效