zoukankan      html  css  js  c++  java
  • Laravel自定义Api接口全局异常处理

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

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

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

    步骤

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

    1.添加异常处理类

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


    2.修改laravel异常处理

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

    这样就可以了

  • 相关阅读:
    JavaScript的数据类型和运算符总结
    html&css精华总结
    lambda表达式&map&filter&yield
    tp5.1 order函数排序无效和orderRaw自定义处理排序
    tp5.1 多对多关联,添加中间表自动时间戳
    mysql索引类型和索引方法
    a标签跨域下载文件,解决download失效问题
    js读取input[type=file]图片,并实时预览
    如何禁止浏览器自动填充
    php 一维数组的合并和去重
  • 原文地址:https://www.cnblogs.com/mouseleo/p/10415526.html
Copyright © 2011-2022 走看看