一、通用化API接口数据封装
- 1、将下面代码放到common.php公共文件中,方便调用
/**
* 通用化API接口数据输出
* @param int $status 业务状态码
* @param string $message 信息提示
* @param [] $data 数据
* @param int $httpCode http状态码
* @return array
*/
function show($status, $message, $data=[], $httpCode=200) {
$data = [
'status' => $status,
'message' => $message,
'data' => $data,
];
return json($data, $httpCode);
}
return show(1, 'OK', $data, 200);
二、不可预知的内部异常api数据输出解决方案

- 1、自定义ApiException继承Exception
<?php
namespace app\common\lib\exception;
use think\Exception;
class ApiException extends Exception {
public $message = '';
public $httpCode = 500;
public $code = 0;
/**
* @param string $message
* @param int $httpCode
* @param int $code
*/
public function __construct($message = '', $httpCode = 0, $code = 0) {
$this->httpCode = $httpCode;
$this->message = $message;
$this->code = $code;
}
}
- 2、自定义ApiHandleException继承Handle处理异常
<?php
namespace app\common\lib\exception;
use think\exception\Handle;
class ApiHandleException extends Handle {
/**
* http 状态码
* @var int
*/
public $httpCode = 500;
public function render(\Exception $e) {
if(config('app_debug') == true) { // 调试情况下显示自带的异常渲染
return parent::render($e);
}
if ($e instanceof ApiException) { // 自定义的异常类
$this->httpCode = $e->httpCode;
}
// 结合前面的通用化API接口数据封装返回给前端
return show(0, $e->getMessage(), [], $this->httpCode);
}
}
- 3、替换系统自带的Hanlder处理异常类
找到config.php
配置类,指向自己的ApiHandleException处理类
// 异常处理handle类 留空使用 \think\exception\Handle
'exception_handle' => '\app\common\lib\exception\ApiHandleException',
throw new ApiException('授权码sign失败', 401);