You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.9 KiB
88 lines
2.9 KiB
"use strict";
|
|
const common_vendor = require("../../common/vendor.js");
|
|
const utils_request_http = require("./http.js");
|
|
const enums_requestEnums = require("../../enums/requestEnums.js");
|
|
const stores_user = require("../../stores/user.js");
|
|
const router_index = require("../../router/index.js");
|
|
const config_index = require("../../config/index.js");
|
|
const requestHooks = {
|
|
requestInterceptorsHook(options, config) {
|
|
const { urlPrefix, baseUrl, withToken } = config;
|
|
options.header = options.header || {};
|
|
if (urlPrefix) {
|
|
options.url = `${urlPrefix}${options.url}`;
|
|
}
|
|
if (baseUrl) {
|
|
options.url = `${baseUrl}${options.url}`;
|
|
}
|
|
const token = stores_user.useUserStore().token || null;
|
|
if (withToken && !options.header.token) {
|
|
options.header.token = token;
|
|
}
|
|
options.header.version = config_index.config.version;
|
|
return options;
|
|
},
|
|
async responseInterceptorsHook(response, config, options) {
|
|
var _a;
|
|
const { isTransformResponse, isReturnDefaultResponse, isAuth } = config;
|
|
if (isReturnDefaultResponse) {
|
|
return response;
|
|
}
|
|
if (!isTransformResponse) {
|
|
return response.data;
|
|
}
|
|
const { logout } = stores_user.useUserStore();
|
|
const { code, data, msg, show } = response.data;
|
|
switch (code) {
|
|
case enums_requestEnums.RequestCodeEnum.SUCCESS:
|
|
msg && show && common_vendor.index.$u.toast(msg);
|
|
return data;
|
|
case enums_requestEnums.RequestCodeEnum.FAILED:
|
|
msg && common_vendor.index.$u.toast(msg);
|
|
return Promise.reject(msg);
|
|
case enums_requestEnums.RequestCodeEnum.TOKEN_INVALID:
|
|
logout();
|
|
if (isAuth && ((_a = options.method) == null ? void 0 : _a.toUpperCase()) !== "GET") {
|
|
router_index.router.navigateTo({ path: "/pages/login/login" });
|
|
}
|
|
return Promise.reject(msg);
|
|
default:
|
|
return data;
|
|
}
|
|
},
|
|
async responseInterceptorsCatchHook(options, error) {
|
|
var _a;
|
|
if (((_a = options.method) == null ? void 0 : _a.toUpperCase()) == enums_requestEnums.RequestMethodsEnum.POST) {
|
|
common_vendor.index.$u.toast("请求失败,请重试");
|
|
}
|
|
return error.errMsg || error;
|
|
}
|
|
};
|
|
const defaultOptions = {
|
|
requestOptions: {
|
|
timeout: config_index.config.timeout
|
|
},
|
|
baseUrl: config_index.config.baseUrl,
|
|
//是否返回默认的响应
|
|
isReturnDefaultResponse: false,
|
|
// 需要对返回数据进行处理
|
|
isTransformResponse: true,
|
|
// 接口拼接地址
|
|
urlPrefix: config_index.config.urlPrefix,
|
|
// 忽略重复请求
|
|
ignoreCancel: false,
|
|
// 是否携带token
|
|
withToken: true,
|
|
isAuth: false,
|
|
retryCount: 2,
|
|
retryTimeout: 1e3,
|
|
requestHooks
|
|
};
|
|
function createRequest(opt) {
|
|
return new utils_request_http.HttpRequest(
|
|
// 深度合并
|
|
common_vendor.merge(defaultOptions, opt || {})
|
|
);
|
|
}
|
|
const request = createRequest();
|
|
exports.request = request;
|
|
|