Laravel自定义Api接口全局异常处理

在做API时,需要对一些异常进行全局处理,比如添加用户执行失败时,需要返回错误信息

  1. // 添加用户 www.bcty365.com 
  2. $result = User::add($user); 
  3. if(emptyempty($result)){ 
  4.     throw new ApiException('添加失败'); 
  5. } 
  6.  
  7. API 回复 
  8. { 
  9.     "msg" : "添加失败", 
  10.     "data" : "", 
  11.     "status" : 0 // 0为执行错误 
  12. } 

那么我们就需要添加一个全局异常处理,专门用来返回错误信息

步骤

1.添加异常处理类
2.修改laravel异常处理

1.添加异常处理类

  1. ./app/Exceptions/ApiException.php 
  2. <?php 
  3. namespace App\Exceptions; 
  4.  
  5. class ApiException extends \Exception 
  6. { 
  7.     function __construct($msg='') 
  8.     { 
  9.         parent::__construct($msg); 
  10.     } 
  11. } 


2.修改laravel异常处理

  1. ./app/Exceptions/Handler.php 
  2.  
  3. // Handler的render函数 
  4. public function render($request, Exception $e) 
  5. { 
  6.     // 如果config配置debug为true ==>debug模式的话让laravel自行处理 
  7.     if(config('app.debug')){ 
  8.         return parent::render($request, $e); 
  9.     } 
  10.     return $this->handle($request, $e); 
  11. } 
  12.  
  13. // 新添加的handle函数 
  14. public function handle($request, Exception $e){ 
  15.     // 只处理自定义的APIException异常 
  16.     if($e instanceof ApiException) { 
  17.         $result = [ 
  18.             "msg"    => "", 
  19.             "data"   => $e->getMessage(), 
  20.             "status" => 0 
  21.         ]; 
  22.         return response()->json($result); 
  23.     } 
  24.     return parent::render($request, $e); 
  25. } 

这样就可以了

posted on 2019-02-21 21:41  刘应杰  阅读(1652)  评论(0)    收藏  举报

导航