• 可以在common.php中封装一个API通用化格式
  • 杜绝无效请求
    处理方法不存在时可在BaseController控制器用添加魔术方法__call()来处理相对应用的返回格式,如:

  1. 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',
];
最后修改:2023 年 07 月 25 日
您的赞赏是对我最大的支持。