public function handle_request() { $this->_apf = APF::get_instance(); $this->_request = $this->_apf->get_request(); $this->_params = $this->_request->get_parameters(); $request_body = file_get_contents('php://input'); if ($request_body) { $res = json_decode($request_body, true); if (is_array($res)) { foreach ($res as $k => $v) { $_REQUEST[$k] = $v; } } } $this->_params = array_merge($this->_params, $_REQUEST); $router_matches = $this->_request->get_router_matches(); try { // 验证参数 if (isset($this->paramRules)) { $validator = new Util_Validator($this->_params, $this->paramRules); if ($validator->fails()) { throw new Exception_General_InvalidParameters(json_encode($validator->messages())); } } // 通过缓存去获取数据 if (self::$_totalCacheOnOff && $this->_isCache && $this->setCacheKey()) { // 获取数据 $mem = APF_Cache_Factory::get_instance()->get_memcache(); if ($this->_params['rmCache']) { // 是否清除缓存 $mem->delete($this->_cacheKey); // 删除缓存 } $ret = $mem->get($this->_cacheKey); if (!$ret) { $ret = $this->handle_request_internal(); if ($ret['status'] == Const_APIStatus::RETURN_CODE_OK) { $mem->set($this->_cacheKey, $ret, $this->_isCacheZip, $this->_cacheTime); } } } else { $ret = $this->handle_request_internal(); } // 生成用户友好的错误消息 if ($ret['status'] == Const_APIStatus::RETURN_CODE_ERROR) { $apiError = new Api_Error($ret['message'], $ret['errcode']); if ($this->isDebugMode()) { $apiError->enableDebugMode(); } $ret = $apiError->toArray(); } } catch (Exception $e) { $apiError = new Api_Error($e); if ($this->isDebugMode()) { $apiError->enableDebugMode(); } $ret = $apiError->toArray(); } $this->output($ret); }