mirror of
https://github.com/YMFE/yapi.git
synced 2024-11-21 01:13:51 +08:00
613 lines
11 KiB
JavaScript
Executable File
613 lines
11 KiB
JavaScript
Executable File
const koaRouter = require('koa-router');
|
|
const interfaceController = require('./controllers/interface.js');
|
|
const groupController = require('./controllers/group.js');
|
|
const userController = require('./controllers/user.js');
|
|
const interfaceColController = require('./controllers/interfaceCol.js');
|
|
const testController = require('./controllers/test.js');
|
|
|
|
const yapi = require('./yapi.js');
|
|
const projectController = require('./controllers/project.js');
|
|
const logController = require('./controllers/log.js');
|
|
const followController = require('./controllers/follow.js');
|
|
const openController = require('./controllers/open.js');
|
|
const { createAction } = require('./utils/commons.js');
|
|
|
|
const router = koaRouter();
|
|
|
|
let INTERFACE_CONFIG = {
|
|
interface: {
|
|
prefix: '/interface/',
|
|
controller: interfaceController
|
|
},
|
|
user: {
|
|
prefix: '/user/',
|
|
controller: userController
|
|
},
|
|
group: {
|
|
prefix: '/group/',
|
|
controller: groupController
|
|
},
|
|
project: {
|
|
prefix: '/project/',
|
|
controller: projectController
|
|
},
|
|
log: {
|
|
prefix: '/log/',
|
|
controller: logController
|
|
},
|
|
follow: {
|
|
prefix: '/follow/',
|
|
controller: followController
|
|
},
|
|
col: {
|
|
prefix: '/col/',
|
|
controller: interfaceColController
|
|
},
|
|
test: {
|
|
prefix: '/test/',
|
|
controller: testController
|
|
},
|
|
open: {
|
|
prefix: '/open/',
|
|
controller: openController
|
|
}
|
|
};
|
|
|
|
let routerConfig = {
|
|
group: [
|
|
{
|
|
action: 'getMyGroup',
|
|
path: 'get_mygroup',
|
|
method: 'get'
|
|
},
|
|
|
|
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'add',
|
|
path: 'add',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'up',
|
|
path: 'up',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'del',
|
|
path: 'del',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'addMember',
|
|
path: 'add_member',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'changeMemberRole',
|
|
path: 'change_member_role',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'delMember',
|
|
path: 'del_member',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getMemberList',
|
|
path: 'get_member_list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'get',
|
|
path: 'get',
|
|
method: 'get'
|
|
}
|
|
],
|
|
user: [
|
|
{
|
|
action: 'login',
|
|
path: 'login',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'reg',
|
|
path: 'reg',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'findById',
|
|
path: 'find',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'update',
|
|
path: 'update',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'del',
|
|
path: 'del',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getLoginStatus',
|
|
path: 'status',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'logout',
|
|
path: 'logout',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'loginByToken',
|
|
path: 'login_by_token',
|
|
method: 'all'
|
|
},
|
|
{
|
|
action: 'getLdapAuth',
|
|
path: 'login_by_ldap',
|
|
method: 'all'
|
|
},
|
|
{
|
|
action: 'upStudy',
|
|
path: 'up_study',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'changePassword',
|
|
path: 'change_password',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'search',
|
|
path: 'search',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'project',
|
|
path: 'project',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'avatar',
|
|
path: 'avatar',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'uploadAvatar',
|
|
path: 'upload_avatar',
|
|
method: 'post'
|
|
}
|
|
],
|
|
project: [
|
|
{
|
|
action: 'upSet',
|
|
path: 'upset',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getEnv',
|
|
path: 'get_env',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'add',
|
|
path: 'add',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'get',
|
|
path: 'get',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'up',
|
|
path: 'up',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'del',
|
|
path: 'del',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'addMember',
|
|
path: 'add_member',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'delMember',
|
|
path: 'del_member',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'changeMemberRole',
|
|
path: 'change_member_role',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'changeMemberEmailNotice',
|
|
path: 'change_member_email_notice',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getMemberList',
|
|
path: 'get_member_list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'search',
|
|
path: 'search',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'upEnv',
|
|
path: 'up_env',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upTag',
|
|
path: 'up_tag',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'token',
|
|
path: 'token',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'updateToken',
|
|
path: 'update_token',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'checkProjectName',
|
|
path: 'check_project_name',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'copy',
|
|
path: 'copy',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'swaggerUrl',
|
|
path: 'swagger_url',
|
|
method: 'get'
|
|
}
|
|
],
|
|
interface: [
|
|
{
|
|
action: 'add',
|
|
path: 'add',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'downloadCrx',
|
|
path: 'download_crx',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'getCatMenu',
|
|
path: 'getCatMenu',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'get',
|
|
path: 'get',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'up',
|
|
path: 'up',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'del',
|
|
path: 'del',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'interUpload',
|
|
path: 'interUpload',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'listByCat',
|
|
path: 'list_cat',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'listByMenu',
|
|
path: 'list_menu',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'listByOpen',
|
|
path: 'list_open',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'addCat',
|
|
path: 'add_cat',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upCat',
|
|
path: 'up_cat',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'delCat',
|
|
path: 'del_cat',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getCustomField',
|
|
path: 'get_custom_field',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'save',
|
|
path: 'save',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upIndex',
|
|
path: 'up_index',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upCatIndex',
|
|
path: 'up_cat_index',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'schema2json',
|
|
path: 'schema2json',
|
|
method: 'post'
|
|
}
|
|
],
|
|
log: [
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'listByUpdate',
|
|
path: 'list_by_update',
|
|
method: 'post'
|
|
}
|
|
],
|
|
follow: [
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'add',
|
|
path: 'add',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'del',
|
|
path: 'del',
|
|
method: 'post'
|
|
}
|
|
],
|
|
col: [
|
|
{
|
|
action: 'addCol',
|
|
path: 'add_col',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'addCaseList',
|
|
path: 'add_case_list',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'cloneCaseList',
|
|
path: 'clone_case_list',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'list',
|
|
path: 'list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'getCaseList',
|
|
path: 'case_list',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'getCaseListByVariableParams',
|
|
path: 'case_list_by_var_params',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'addCase',
|
|
path: 'add_case',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upCase',
|
|
path: 'up_case',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getCase',
|
|
path: 'case',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'upCol',
|
|
path: 'up_col',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upCaseIndex',
|
|
path: 'up_case_index',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'upColIndex',
|
|
path: 'up_col_index',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'delCol',
|
|
path: 'del_col',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'delCase',
|
|
path: 'del_case',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'runCaseScript',
|
|
path: 'run_script',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'getCaseEnvList',
|
|
path: 'case_env_list',
|
|
method: 'get'
|
|
}
|
|
],
|
|
test: [
|
|
{
|
|
action: 'testPost',
|
|
path: 'post',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'testGet',
|
|
path: 'get',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'testPut',
|
|
path: 'put',
|
|
method: 'put'
|
|
},
|
|
{
|
|
action: 'testDelete',
|
|
path: 'delete',
|
|
method: 'del'
|
|
},
|
|
{
|
|
action: 'testHead',
|
|
path: 'head',
|
|
method: 'head'
|
|
},
|
|
{
|
|
action: 'testOptions',
|
|
path: 'options',
|
|
method: 'options'
|
|
},
|
|
{
|
|
action: 'testPatch',
|
|
path: 'patch',
|
|
method: 'patch'
|
|
},
|
|
{
|
|
action: 'testFilesUpload',
|
|
path: 'files/upload',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'testSingleUpload',
|
|
path: 'single/upload',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'testHttpCode',
|
|
path: 'http/code',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'testRaw',
|
|
path: 'raw',
|
|
method: 'post'
|
|
},
|
|
{
|
|
action: 'testResponse',
|
|
path: 'response',
|
|
method: 'get'
|
|
}
|
|
],
|
|
open: [
|
|
{
|
|
action: 'projectInterfaceData',
|
|
path: 'project_interface_data',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'runAutoTest',
|
|
path: 'run_auto_test',
|
|
method: 'get'
|
|
},
|
|
{
|
|
action: 'importData',
|
|
path: 'import_data',
|
|
method: 'post'
|
|
}
|
|
]
|
|
};
|
|
|
|
let pluginsRouterPath = [];
|
|
|
|
function addPluginRouter(config) {
|
|
if (!config.path || !config.controller || !config.action) {
|
|
throw new Error('Plugin Route config Error');
|
|
}
|
|
let method = config.method || 'GET';
|
|
// let routerPath = '/plugin/' + config.path;
|
|
// 支持 /api/open/plugin 前缀的 openApi
|
|
let routerPath = (config.prefix || '') + '/plugin/' + config.path;
|
|
if (pluginsRouterPath.indexOf(routerPath) > -1) {
|
|
throw new Error('Plugin Route path conflict, please try rename the path');
|
|
}
|
|
pluginsRouterPath.push(routerPath);
|
|
createAction(router, '/api', config.controller, config.action, routerPath, method, false);
|
|
}
|
|
|
|
yapi.emitHookSync('add_router', addPluginRouter);
|
|
|
|
for (let ctrl in routerConfig) {
|
|
let actions = routerConfig[ctrl];
|
|
actions.forEach(item => {
|
|
let routerController = INTERFACE_CONFIG[ctrl].controller;
|
|
let routerPath = INTERFACE_CONFIG[ctrl].prefix + item.path;
|
|
createAction(router, '/api', routerController, item.action, routerPath, item.method);
|
|
});
|
|
}
|
|
|
|
module.exports = router;
|