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

时间:2022-07-27
本文章向大家介绍laravel接管Dingo-api和默认的错误处理方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

接管Dingo-api的错误

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

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中写入以下代码

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和默认的错误处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考。