UNPKG

framework4js

Version:

Framework-for-js is a better Javascript's framework

121 lines (111 loc) 3.32 kB
"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;