基于 ThinkPHP 框架项目修改报错信息返回格式为 JSON
后知后觉 现有 2 评论

在前后分离开发中,如 Vue.js ,后台只能返回json格式。在参数验证中希望抛出异常,并由repsonse统一处理,返回json。而默认的异常处理都是返回页面,因而需要调整。

解决

查找资料后得知,在框架内的 library/think/exception/Handle.php 文件修改即可。

#180 处,查找关键字 exception_tmpl

        //include Config::get('exception_tmpl');
        // 获取并清空缓存
        //$content  = ob_get_clean();
        //$response = new Response($content, 'html');
        $json_return = array('status' => 555, 'msg' => "服务器忙碌,请稍后重试!", 'data' => '[]');
        $content = json_encode($json_return,JSON_UNESCAPED_UNICODE);
        $response = new Response($content, 'json');
小贴士:必须注释开头处的 include 行,否则将输出默认报错页面并附带 JSON 字符串。

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。
  1. avatarImg 凉风有信

    。。。直接修改源码那么暴力的吗?最优的方法是捕获异常,一搬我会封装统一返回json格式

    Chrome 77.0 Windows 10
    IP 属地 未知
    1. avatarImg
      @凉风有信

      能解决问题就是好办法,哈哈。

      Firefox 69.0 Windows 10
      IP 属地 未知