UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

76 lines (69 loc) 3.05 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _typeof = require('@babel/runtime/helpers/typeof'); var _classCallCheck = require('@babel/runtime/helpers/classCallCheck'); var _createClass = require('@babel/runtime/helpers/createClass'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof); var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck); var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass); /** * Cocos 端请求域名拼接拦截器 * * 业务侧调用 `QueryUserInfoClient.QueryUserInfo(...)` 时, * pb 编译产物里只有 `/pmdtrpc.commcgi.user.user/QueryUserInfo` 这种相对路径, * 本拦截器负责拼成 `baseUrl + path` 的完整 URL。 * * 特点: * - 幂等:第一次执行时备份 `__cocosOriginUrl`,重试时基于它重拼,不会累加 * - 已是 http(s) 的 URL 不动 * - 默认 POST + application/json * * 参考 pmd-npm/packages/business/src/network/interceptor/request/cocos/cocosHostInterceptor.ts */ var CocosHostInterceptor = /*#__PURE__*/function () { function CocosHostInterceptor(options) { _classCallCheck__default["default"](this, CocosHostInterceptor); this.options = options; } return _createClass__default["default"](CocosHostInterceptor, [{ key: "interceptor", value: function interceptor(param) { var _a, _b; // 备份原始 url,用于幂等重试 if (param.__cocosOriginUrl === undefined) { param.__cocosOriginUrl = param.url; } var originUrl = param.__cocosOriginUrl || ''; // 若 reqData 带了 addressName + methodName(兼容 gp-next 风格),用它们拼 path var addressName = ((_a = param.reqData) === null || _a === void 0 ? void 0 : _a.addressName) || ''; var methodName = ((_b = param.reqData) === null || _b === void 0 ? void 0 : _b.methodName) || ''; var path = originUrl; if (addressName) { path = "/".concat(addressName.replace(/^\/+/, '')); if (methodName) { path += "/".concat(methodName.replace(/^\/+/, '')); } } if (/^https?:\/\//i.test(path)) { param.url = path; } else { var base = (this.options.baseUrl || '').replace(/\/+$/, ''); var normalizedPath = path.startsWith('/') ? path : "/".concat(path); param.url = base + normalizedPath; } // 清理不应进入 body 的字段 if (param.reqData && _typeof__default["default"](param.reqData) === 'object') { delete param.reqData.addressName; delete param.reqData.methodName; } // 默认 POST + JSON param.method = param.method || 'POST'; param.header = Object.assign({ 'Content-Type': 'application/json' }, param.header || {}); return [false, param]; } }]); }(); exports.CocosHostInterceptor = CocosHostInterceptor;