in console-ui/src/globalLib.js [429:490]
function handleCustomService(...args) {
let [config] = args;
// 只处理com.alibaba.开头的url
if (config && config.url && config.url.indexOf('com.alibaba.') === 0) {
const registerName = config.url;
const serviceObj = NacosRealUrlMapper(registerName);
if (serviceObj && serviceObj.url && serviceObj.url.replace) {
// 有mock数据 直接返回 生产环境失效
if (projectConfig.is_preview && serviceObj.is_mock && config.success) {
let code = null;
try {
code = JSON.parse(serviceObj.defaults);
} catch (error) {}
config.success(code);
return;
}
// 替换url中的占位符
config.url = serviceObj.url.replace(/{([^\}]+)}/g, ($1, $2) => config.$data[$2]);
try {
// 添加静态参数
if (serviceObj.is_param && typeof config.data === 'object') {
config.data = Object.assign({}, JSON.parse(serviceObj.params), config.data);
}
} catch (e) {}
// 替换请求方式
if (serviceObj.method && !config.type) {
config.type = serviceObj.methodType;
}
// 将请求参数变为json格式
if (serviceObj.isJsonData && typeof config.data === 'object') {
config.data = JSON.stringify(config.data);
config.processData = false;
config.dataType = 'json';
config.contentType = 'application/json';
}
try {
// 设置临时代理 生产环境失效
if (projectConfig.is_preview && serviceObj.is_proxy) {
const { beforeSend } = config;
config.beforeSend = function(xhr) {
serviceObj.cookie && xhr.setRequestHeader('tmpCookie', serviceObj.cookie);
serviceObj.header && xhr.setRequestHeader('tmpHeader', serviceObj.header);
serviceObj.proxy && xhr.setRequestHeader('tmpProxy', serviceObj.proxy);
beforeSend && beforeSend(xhr);
};
}
} catch (e) {}
// 设置自动loading效果
if (serviceObj.autoLoading) {
// nacosUtils.openLoading();
const prevComplete = config.complete;
config.complete = function() {
nacosUtils.closeLoading();
typeof prevComplete === 'function' &&
prevComplete.apply($, Array.prototype.slice.call(args));
};
}
// serviceObj = null;
}
}
return config;
}