ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 说明 20171016 文档以最新版本为实例 # 注意问题 ## 处理用户抛出异常 按thinkphp框架规范,编写异常处理类,接手api访问异常 >用户抛出异常,就是指用abort(), throw new Expception()抛出来的异常。 >[warning]如在控制器中使用abort(404,'这是有问题',); 返回将不是json信息,对于api开发,这是一个问题,需要写异常处理来解决这个问题。 解决办法如下: 步骤 第一步: 在api模块中 编号扩展类【这里直接引用 官网收费文档实例】 `api\exception\Http` Http.php代码发下 ~~~ <?php namespace app\api\exception; use think\exception\Handle; use think\exception\HttpException; class Http extends Handle { public function render(\Exception $e) { if ($e instanceof HttpException) { $statusCode = $e->getStatusCode(); } if (!isset($statusCode)) { $statusCode = 500; } $result = [ 'code' => $statusCode, 'msg' => $e->getMessage(), 'time' => $_SERVER['REQUEST_TIME'], ]; return json($result, $statusCode); } } ~~~ 第二步,用上面异常类接手系统默认异常处理类 配置文件 `config\api\config.php ~~~ <?php //注意,需要配置为全局变量, 不能在return 中配置,作用于模块中的route不起作用 config('exception_handle','\app\api\exception\Http'); return [ ]; ~~~ ## 解决访问操作不存在问题 在控制器目录下,建立 立 controller/Error.php * [关于空操作官方文档](https://www.kancloud.cn/manual/thinkphp5_1/353982) >[info]解决无对应操作问题 ~~~ <?php namespace app\api\controller; use think\Request; class Error { public function index(Request $request) { $msg = $request->controller(); return $this->msg($msg); } protected function msg($name) { return json(['code'=>'440','msg'=>$name]); } } ~~~