当前位置:首页 > CMS教程 > 其它CMS > 列表

laravel接管Dingo-api和默认的错误处理方式

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-18 10:09:36 浏览: 评论:0 

今天小编就为大家分享一篇laravel接管Dingo-api和默认的错误处理方式,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

接管Dingo-api的错误

Dingo-api laravel错误处理

如上图所示,AppServiceProvider.php中的register()方法中添加如下代码

  1. \API::error(function (\Illuminate\Validation\ValidationException $exception){ 
  2.   $data =$exception->validator->getMessageBag(); 
  3.    $msg = collect($data)->first(); 
  4.    if(is_array($msg)){ 
  5.      $msg = $msg[0]; 
  6.    } 
  7.    return response()->json(['message'=>$msg,'status_code'=>400], 200); 
  8.  }); 
  9.  \API::error(function (\Dingo\Api\Exception\ValidationHttpException $exception){ 
  10.    $errors = $exception->getErrors(); 
  11.    return response()->json(['message'=>$errors->first(),'status_code'=>400], 200); 
  12.  }); 

接管laravel的错误

Dingo-api laravel错误处理

在Exceptions的Handler.php的render中写入以下代码

  1. public function render($request, Exception $exception
  2.   { 
  3.     if($exception instanceof \Illuminate\Validation\ValidationException){ 
  4.       $data = $exception->validator->getMessageBag(); 
  5.       $msg = collect($data)->first(); 
  6.       if(is_array($msg)){ 
  7.         $msg = $msg[0]; 
  8.       } 
  9.       return response()->json(['message'=>$msg],200); 
  10.     } 
  11.  
  12.     if (in_array('api',$exception->guards())){ 
  13.       if($exception instanceof AuthenticationException){ 
  14.         return response()->json(['message'=>'token错误'],200); 
  15.       } 
  16.       if($exception instanceof ModelNotFoundException){ 
  17.         return response()->json(['message'=>'该模型未找到'],200); 
  18.       } 
  19.  
  20.     } 
  21.  
  22.     return parent::render($request$exception); 
  23.   }

Tags: Dingo-api laravel错误处理

分享到: