mocker-api
Version:
This is dev support mock RESTful API.
72 lines • 3.46 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mockerHandle = mockerHandle;
var url_1 = __importDefault(require("url"));
var body_parser_1 = __importDefault(require("body-parser"));
var utils_1 = require("./utils");
function mockerHandle(param) {
var _a = param || {}, _b = _a.options, options = _b === void 0 ? {} : _b, req = _a.req, res = _a.res, next = _a.next, mocker = _a.mocker, mockerKey = _a.mockerKey;
var bodyParserMethd = body_parser_1.default.json(__assign({}, options.bodyParserJSON)); // 默认使用json解析
/**
* `application/x-www-form-urlencoded; charset=UTF-8` => `application/x-www-form-urlencoded`
* Issue: https://github.com/jaywcjlove/mocker-api/issues/50
*/
var contentType = req.get('Content-Type');
contentType = contentType && contentType.replace(/;.*$/, '');
if (options.bodyParserConf && options.bodyParserConf[contentType]) {
// 如果存在options.bodyParserConf配置 {'text/plain': 'text','text/html': 'text'}
switch (options.bodyParserConf[contentType]) { // 获取bodyParser的方法
case 'raw':
bodyParserMethd = body_parser_1.default.raw(__assign({}, options.bodyParserRaw));
break;
case 'text':
bodyParserMethd = body_parser_1.default.text(__assign({}, options.bodyParserText));
break;
case 'urlencoded':
bodyParserMethd = body_parser_1.default.urlencoded(__assign({ extended: false }, options.bodyParserUrlencoded));
break;
case 'json': bodyParserMethd = body_parser_1.default.json(__assign({}, options.bodyParserJSON)); //使用json解析 break;
}
}
else {
// 兼容原来的代码,默认解析
// Compatible with the original code, default parsing
switch (contentType) {
case 'text/plain':
bodyParserMethd = body_parser_1.default.raw(__assign({}, options.bodyParserRaw));
break;
case 'text/html':
bodyParserMethd = body_parser_1.default.text(__assign({}, options.bodyParserText));
break;
case 'application/x-www-form-urlencoded':
bodyParserMethd = body_parser_1.default.urlencoded(__assign({ extended: false }, options.bodyParserUrlencoded));
break;
}
}
bodyParserMethd(req, res, function () {
var result = mocker[mockerKey];
if (typeof result === 'function') {
var rgxStr = ~mockerKey.indexOf(' ') ? ' ' : '';
req.params = (0, utils_1.pathMatch)({ sensitive: false, trailing: false, end: false })(mockerKey.split(new RegExp(rgxStr))[1])(url_1.default.parse(req.url).pathname);
result(req, res, next);
}
else {
res.json(result);
}
});
}
//# sourceMappingURL=mockerHandle.js.map
;