From e9d95ebbc9ec4696a6a510a7d77b506b2ce20668 Mon Sep 17 00:00:00 2001 From: sean Date: Mon, 31 Jul 2017 10:15:16 +0800 Subject: [PATCH] feat: mockServer add crossRequest and change autoincrement num --- server/middleware/mockServer.js | 11 +++++++--- server/models/base.js | 2 +- server/models/interface.js | 5 +++-- server_dist/middleware/mockServer.js | 33 ++++++++++++++++++---------- server_dist/models/base.js | 2 +- server_dist/models/interface.js | 5 +++-- 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/server/middleware/mockServer.js b/server/middleware/mockServer.js index e6389063..22637a72 100644 --- a/server/middleware/mockServer.js +++ b/server/middleware/mockServer.js @@ -16,7 +16,6 @@ module.exports = async (ctx, next) => { yapi.commons.log('MockServer Running...'); let projectInst = yapi.getInst(projectModel), projects; - try { projects = await projectInst.getByDomain(hostname); } catch (e) { @@ -46,9 +45,15 @@ module.exports = async (ctx, next) => { let interfaceInst = yapi.getInst(interfaceModel); try { - interfaceData = await interfaceInst.getByPath(project._id, ctx.path.substr(project.basepath.length)); + interfaceData = await interfaceInst.getByPath(project._id, ctx.path.substr(project.basepath.length), ctx.method); if (!interfaceData || interfaceData.length === 0) { + //非正常跨域预检请求回应 + if(ctx.method === 'OPTIONS'){ + ctx.set("Access-Control-Allow-Origin", "*") + ctx.set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE") + return ctx.body = 'ok' + } return ctx.body = yapi.commons.resReturn(null, 404, '不存在的api'); } @@ -57,7 +62,7 @@ module.exports = async (ctx, next) => { } interfaceData = interfaceData[0]; - + ctx.set("Access-Control-Allow-Origin", "*") if (interfaceData.res_body_type === 'json') { return ctx.body = Mock.mock( yapi.commons.json_parse(interfaceData.res_body) diff --git a/server/models/base.js b/server/models/base.js index 83553958..a2651393 100644 --- a/server/models/base.js +++ b/server/models/base.js @@ -16,7 +16,7 @@ class baseModel{ model: this.name, field: this.getPrimaryKey(), startAt: 101, - incrementBy: yapi.commons.rand(1, 100) + incrementBy: yapi.commons.rand(1, 10) }); } diff --git a/server/models/interface.js b/server/models/interface.js index f5c4e1c9..e71ad853 100644 --- a/server/models/interface.js +++ b/server/models/interface.js @@ -47,10 +47,11 @@ class interfaceModel extends baseModel { .exec(); } - getByPath(project_id, path) { + getByPath(project_id, path, method) { return this.model.find({ project_id: project_id, - path: path + path: path, + method: method }) .exec(); } diff --git a/server_dist/middleware/mockServer.js b/server_dist/middleware/mockServer.js index 14cd95ef..2658e80d 100644 --- a/server_dist/middleware/mockServer.js +++ b/server_dist/middleware/mockServer.js @@ -103,51 +103,62 @@ module.exports = function () { interfaceInst = _yapi2.default.getInst(_interface2.default); _context.prev = 25; _context.next = 28; - return interfaceInst.getByPath(project._id, ctx.path.substr(project.basepath.length)); + return interfaceInst.getByPath(project._id, ctx.path.substr(project.basepath.length), ctx.method); case 28: interfaceData = _context.sent; if (!(!interfaceData || interfaceData.length === 0)) { - _context.next = 31; + _context.next = 35; break; } + if (!(ctx.method === 'OPTIONS')) { + _context.next = 34; + break; + } + + ctx.set("Access-Control-Allow-Origin", "*"); + ctx.set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE"); + return _context.abrupt('return', ctx.body = 'ok'); + + case 34: return _context.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 404, '不存在的api')); - case 31: + case 35: if (!(interfaceData.length > 1)) { - _context.next = 33; + _context.next = 37; break; } return _context.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '存在多个api,请检查数据库')); - case 33: + case 37: interfaceData = interfaceData[0]; + ctx.set("Access-Control-Allow-Origin", "*"); if (!(interfaceData.res_body_type === 'json')) { - _context.next = 36; + _context.next = 41; break; } return _context.abrupt('return', ctx.body = _mockjs2.default.mock(_yapi2.default.commons.json_parse(interfaceData.res_body))); - case 36: + case 41: return _context.abrupt('return', ctx.body = interfaceData.res_body); - case 39: - _context.prev = 39; + case 44: + _context.prev = 44; _context.t1 = _context['catch'](25); return _context.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 409, _context.t1.message)); - case 42: + case 47: case 'end': return _context.stop(); } } - }, _callee, undefined, [[10, 16], [25, 39]]); + }, _callee, undefined, [[10, 16], [25, 44]]); })); return function (_x, _x2) { diff --git a/server_dist/models/base.js b/server_dist/models/base.js index 62d976e5..2680baef 100644 --- a/server_dist/models/base.js +++ b/server_dist/models/base.js @@ -38,7 +38,7 @@ var baseModel = function () { model: this.name, field: this.getPrimaryKey(), startAt: 101, - incrementBy: _yapi2.default.commons.rand(1, 100) + incrementBy: _yapi2.default.commons.rand(1, 10) }); } diff --git a/server_dist/models/interface.js b/server_dist/models/interface.js index 7e7b1ef6..aa3165c0 100644 --- a/server_dist/models/interface.js +++ b/server_dist/models/interface.js @@ -88,10 +88,11 @@ var interfaceModel = function (_baseModel) { } }, { key: 'getByPath', - value: function getByPath(project_id, path) { + value: function getByPath(project_id, path, method) { return this.model.find({ project_id: project_id, - path: path + path: path, + method: method }).exec(); } }, {