- 可以在common.php中封装一个API通用化格式
杜绝无效请求
处理方法不存在时可在BaseController控制器用添加魔术方法__call()来处理相对应用的返回格式,如:
function __call($name, $arguments)
{ //获取当前应用(模块) $app = app('http')->getName(); //如果模块是API时返回API通用格式 if($app == "api"){
return api(config("status.action_not_found"),$name.'方法不存在',[],500);
} }
处理控制器不存在时可在当前应用controller目录下添加Error控制器添加上面的方法即可
- TP6新增实例化容器方法,如操作数据库可用:app("db")方法
- config目录下新增一个status.php来存放状态码(所有用到的状态码和前端商量好分离开来)
- 处理不可预知的内部异常时
可在当前应用下新建exception目录/Http控制器,继承Handle,引入如下:
use think\exception\Handle;
use think\Response;
use Throwable;
public function render($request, Throwable $e): Response
{
if(method_exists($e,"getStatusCode")){
$this->httpStatus = $e->getStatusCode();
}
// 添加自定义异常处理机制
return api(config("status.error"),$e->getMessage(),[],$this->httpStatus);
}
注意写完之后还得把app目录下的provider.php文件copy到当前应用下,并修改内容如下才能正常应用:
// 容器Provider定义文件
return [
'think\exception\Handle' => 'app\\api\\exception\\Http',
];