表单验证在接口中的使用
问题
Laravel 请求API接口 使用validate表单验证返回欢迎页。
解决方法
进入 App\Exceptions\Handler.php 文件里面,修改render方法
我的是这么写的
public function render($request, Throwable $exception)
{
if ($exception instanceof ApiException )
{
$code = $exception->getCode();
$message = $exception->getMessage();
if ( $code < 0){
$code = ApiErrDesc::ERR_UNKNOWN[0];
$message = $exception->getMessage() ? : ApiErrDesc::ERR_UNKNOWN[1];
}
return $this->json($code,$message,[]);
}else{
//如果路由中含有“api/”,则说明是一个 api 的接口请求
if($request->is("api/*")) {
//如果错误是 ValidationException的一个实例,说明是一个验证的错误
if ($exception instanceof ValidationException) {
$result = [
"code" => 422,
//这里使用 $exception->errors() 得到验证的所有错误信息,是一个关联二维数组,所以 使用了array_values()取得了数组中的值,而值也是一个数组,所以用的两个 [0][0]
"msg" => array_values($exception->errors())[0][0],
"data" => ""
];
return response()->json($result);
}
}
return parent::render($request, $exception);
}
}
需要加一个
use Illuminate\Validation\ValidationException;
重点是
//如果路由中含有“api/”,则说明是一个 api 的接口请求
if($request->is("api/*")) {
//如果错误是 ValidationException的一个实例,说明是一个验证的错误
if ($exception instanceof ValidationException) {
$result = [
"code" => 422,
//这里使用 $exception->errors() 得到验证的所有错误信息,是一个关联二维数组,所以 使用了array_values()取得了数组中的值,而值也是一个数组,所以用的两个 [0][0]
"msg" => array_values($exception->errors())[0][0],
"data" => ""
];
return response()->json($result);
}
}
这段代码。