php接口异常,ThinkPHP5接口异常处理

想必不少小伙伴都遇到过在使用接口开发的时候有时候一个变量、方法或者控制器不存在访问的时候就会出现如下错误提示

bVbIc3K

bVbIc3N

对于接口开发来说这样是不友好的,有时还会使前端页面直接崩溃。我们可以单独写一个异常类来处理接口下关的异步处理

1、在application/common/lib下创建一个exception文件夹再在里面创建一个API接口异步处理文件ApiHandleException.php(如果没有common、lib相关目录自行创建)

namespace app\common\lib\exception;

use think\Exception;

use think\config;

use think\exception\Handle;

/**

* 自定义异常类

*/

class ApiHandleException extends Handle

{

// http 状态码

public $httpCode = 500;

public function render(\Exception $e)

{

//配置文件中设置app_debug如果为true则原样输出,false以json格式输出

$debug_status = config("app_debug");

if ($debug_status) {

return parent::render($e);

} else {

return show(2, $e->getMessage(), [], $this->httpCode);

}

}

}

引入系统异步处理相关文件Handle在thinkphplibrarythinkexception下

这里show是我在applicationcommon.php中创建的一个方法代码如下

/**

* 通用API接口数据输出

* @param int $status 1 成功 2 失败

* @param string $message 信息提示

* @param array $data 数据

* @param int $httpCode http状态码

* @return \think\response\Json

*/

function show($status, $message ,$data = [] ,$httpCode = 200)

{

$data = [

'status' => $status,

'message' => $message,

'data' => $data

];

return json($data, $httpCode);

}

2、修改配置文件直接在相应的模块儿下创建相关的配置文件目录及文件,然后引入刚才我们自定义的文件异步处理类

return [

'exception_handle' => '\app\common\lib\exception\ApiHandleException',

'app_debug' => false,

];

3、单独创建一个Demo控制器测试

namespace app\index\controller;

use think\Controller;

use think\Response;

class Demo extends Controller

{

public function index()

{

echo $abc;

}

}

再次访问效果如下

bVbIc45

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值