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

2020-10-20 10:53:31 浏览数 (1)

接管Dingo-api的错误

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

代码语言:javascript复制
API::error(function (IlluminateValidationValidationException $exception){
  $data =$exception- validator- getMessageBag();
   $msg = collect($data)- first();
   if(is_array($msg)){
     $msg = $msg[0];
   }
   return response()- json(['message'= $msg,'status_code'= 400], 200);
 });
 API::error(function (DingoApiExceptionValidationHttpException $exception){
   $errors = $exception- getErrors();
   return response()- json(['message'= $errors- first(),'status_code'= 400], 200);
 });

接管laravel的错误

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

代码语言:javascript复制
public function render($request, Exception $exception)
  {
    if($exception instanceof IlluminateValidationValidationException){
      $data = $exception- validator- getMessageBag();
      $msg = collect($data)- first();
      if(is_array($msg)){
        $msg = $msg[0];
      }
      return response()- json(['message'= $msg],200);
    }

    if (in_array('api',$exception- guards())){
      if($exception instanceof AuthenticationException){
        return response()- json(['message'= 'token错误'],200);
      }
      if($exception instanceof ModelNotFoundException){
        return response()- json(['message'= '该模型未找到'],200);
      }

    }

    return parent::render($request, $exception);
  }

以上这篇laravel接管Dingo-api和默认的错误处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考。

0 人点赞