prepareExecute("SELECT eo_api.apiSuccessMock FROM eo_api WHERE eo_api.projectID = ? AND eo_api.apiURI = ? AND eo_api.apiRequestType = ? AND eo_api.removed = 0 ORDER BY eo_api.apiUpdateTime DESC;", array( $project_id, $api_uri, $request_type )); if (empty($result)) { $result = $this->getRestfulMock($project_id, $api_uri, $request_type); if ($result) { return $result['apiSuccessMock']; } else return FALSE; } else return $result['apiSuccessMock']; } /** * 获取api的失败数据 */ public function getFailureResult(&$project_id, &$api_uri, &$request_type) { $db = getDatabase(); $result = $db->prepareExecute("SELECT eo_api.apiFailureMock FROM eo_api WHERE eo_api.projectID = ? AND eo_api.apiURI = ? AND eo_api.apiRequestType = ? AND eo_api.removed = 0 ORDER BY eo_api.apiUpdateTime DESC;", array( $project_id, $api_uri, $request_type )); if (empty($result)) { $result = $this->getRestfulMock($project_id, $api_uri, $request_type); if ($result) { return $result['apiFailureMock']; } else return FALSE; } else return $result['apiFailureMock']; } /** * 获取高级mock结果 * @param $project_id * @param $api_uri * @param $request_type * @return bool */ public function getMockResult(&$project_id, &$api_uri, &$request_type) { $db = getDatabase(); $result = $db->prepareExecute('SELECT eo_api.mockResult FROM eo_api WHERE eo_api.projectID = ? AND eo_api.apiURI = ? AND eo_api.apiRequestType = ? AND eo_api.removed = 0 ORDER BY eo_api.apiUpdateTime DESC;', array( $project_id, $api_uri, $request_type )); if (empty($result)) { $result = $this->getRestfulMock($project_id, $api_uri, $request_type); if ($result) { return $result['mockResult']; } else { return FALSE; } } else { return $result['mockResult']; } } /** * 获取restful的mock数据 */ public function getRestfulMock(&$project_id, &$api_uri, &$request_type) { $db = getDatabase(); $result = $db->prepareExecuteAll('SELECT eo_api.apiURI,eo_api.apiID,eo_api.apiSuccessMock,eo_api.apiFailureMock,eo_api.mockResult FROM eo_api WHERE eo_api.projectID = ? AND eo_api.removed = 0 AND eo_api.apiRequestType = ? ORDER BY eo_api.apiUpdateTime DESC;', array( $project_id, $request_type )); if (empty($result)) { return FALSE; } else { foreach ($result as $param) { $msg = preg_replace('/\{[^\/]+\}/', '[^/]+', $param['apiURI']); $msg = str_replace("amp;", "", $msg); $msg = preg_replace('/:[^\/]+/', '[^/]+', $msg); $msg = preg_replace('/\//', '\/', $msg); $msg = preg_replace("/\?/", '\?', $msg); $msg = '/^' . $msg . '$/'; $api_uri = str_replace("amp;", "", $api_uri); if (preg_match($msg, $api_uri)) { return $param; } } return FALSE; } } }