request = is_null($request) ? request() : $request; // 控制器初始化 $this->_initialize(); } /** * 初始化操作 * @access protected */ protected function _initialize() { // //跨域请求检测 // check_cors_request(); // // // 检测IP是否允许 // check_ip_allowed(); //移除HTML标签 //$this->request->filter('trim,strip_tags,htmlspecialchars'); } /** * 操作成功返回的数据 * @param string $msg 提示信息 * @param mixed $data 要返回的数据 * @param int $code 错误码,默认为1 * @param string|null $type 输出类型 * @param array $header 发送的 Header 信息 */ protected function success(string $msg = '', $data = null, int $code = 200, string $type = null, array $header = []) { if (empty($msg)) { $msg = "操作成功"; } $this->result($msg, $data, $code, $type, $header); } /** * 操作失败返回的数据 * @param string $msg 提示信息 * @param mixed $data 要返回的数据 * @param int $code 错误码,默认为0 * @param string|null $type 输出类型 * @param array $header 发送的 Header 信息 */ protected function error(string $msg = '', $data = null, int $code = 0, string $type = null, array $header = []) { if (empty($msg)) { $msg = "操作失败"; } $this->result($msg, $data, $code, $type, $header); } /** * 返回封装后的 API 数据到客户端 * @access protected * @param mixed $msg 提示信息 * @param mixed $data 要返回的数据 * @param int $code 错误码,默认为0 * @param string|null $type 输出类型,支持json/xml/jsonp * @param array $header 发送的 Header 信息 * @return void * @throws HttpResponseException */ protected function result($msg, $data = null, int $code = 0, string $type = null, array $header = []) { $result = [ 'code' => $code, 'msg' => $msg, 'data' => $data, ]; // 如果未设置类型则自动判断 $type = $type ? $type : ($this->request->param(config('var_jsonp_handler')) ? 'jsonp' : $this->responseType); if (isset($header['statuscode'])) { $code = $header['statuscode']; unset($header['statuscode']); } else { //未设置状态码,根据code值判断 $code = $code < 200 ? 200 : $code; } $response = Response::create($result, $type, $code)->header($header); throw new HttpResponseException($response); } }