framework4js
Version:
Framework-for-js is a better Javascript's framework
121 lines (111 loc) • 3.32 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
/**
* Class RESTful
* RESTful handle
* https://www.jb51.net/article/182148.htm
*/
var RESTful = /*#__PURE__*/function () {
/**
* Method constructor
* @param {String} uri
* @param {*} data
* @param {*} mode
* @returns
*/
function RESTful(uri, data, mode) {
(0, _classCallCheck2["default"])(this, RESTful);
/**
* _isRESTful RESTful模式/Other模式
*/
(0, _defineProperty2["default"])(this, "_isRESTful", true);
this._isRESTful = mode || this._isRESTful;
this._uri = uri;
this._data = data;
// Not RESTful
if (!this._isRESTful) {
return {
uri: uri,
data: data
};
}
// Transformer
return this._transformer();
}
/**
* private method transformer
*/
(0, _createClass2["default"])(RESTful, [{
key: "_transformer",
value: function _transformer() {
var _this = this;
// 传入数据里的Keys
var dataKeys = Object.keys(this._data);
// 参与替换的Key
var dataArgs = {};
// 不参与替换的Key 后续有用
var dataNotArg = {};
dataKeys.map(function (item) {
// 是否包含__字符,包含__字符的为RESTful指定参数
var res = item.match(/^__/g);
// 将__字符替换
var arg = item.replace(/^__/g, "");
// 包含__的字符
if (res) {
dataArgs[arg] = _this._data[item];
} else {
dataNotArg[arg] = _this._data[item];
}
});
// 处理URI获取动态请求参数
var args = this._uri.match(/<(.*?)>/g);
// Unmatched 没有匹配
if (!args) {}
// 默认值
var defaultArgs = {};
if (!args || !Array.isArray(args)) {
// throw new Exception('The api route does not exist', 'ApiRouteError');
return {
uri: this._uri,
data: this._data
};
} else {
var argsMap = args.map(function (item) {
var arg = item.replace(/(^<)|(>$)/g, "");
var argArr = arg.split("=");
// 含默认值
if (argArr.length === 2) {
defaultArgs[argArr[0]] = argArr[1];
return argArr[0];
} else {
defaultArgs[arg] = null;
return arg;
}
});
// 合并对象
Object.assign(defaultArgs, dataArgs);
// 去除默认值
this._uri = this._uri.replace(/=(.*?)>/g, ">");
argsMap.map(function (item) {
// 替换成新值
_this._uri = _this._uri.replace("<".concat(item, ">"), defaultArgs[item]);
});
// 剩下的新数据
this._newData = dataNotArg;
return {
uri: this._uri,
data: this._newData
};
}
}
}]);
return RESTful;
}();
exports["default"] = RESTful;