mirror of
http://git.mhez-qa.uplus.co.kr/hubez/hubez-admin.git
synced 2025-12-07 01:17:51 +09:00
123 lines
4.5 KiB
JavaScript
123 lines
4.5 KiB
JavaScript
import axios from 'axios';
|
|
import { testProp } from './config';
|
|
import tokenSvc from '@/common/token-service';
|
|
import { consts } from './config';
|
|
|
|
const config = {
|
|
//baseURL: 'http://localhost:7070',
|
|
// baseURL: apiBaseUrl,
|
|
headers: {
|
|
'X-Requested-With': 'XMLHttpRequest'
|
|
},
|
|
timeout: 120000 // timeout은 120초로 설정
|
|
};
|
|
|
|
const httpClient = axios.create(config);
|
|
|
|
const authInterceptor = config => {
|
|
// frontend와 backend의 origin이 다른 경우
|
|
// devServer.proxy 설정을 하던지 baseURL과 withCredentials 설정을 해야 한다.
|
|
// cookie, header 등에 자격정보 설정이 필요한 api는 true 설정으로 호출해야 하고
|
|
// 자격정보 설정이 필요없는 api는 withCredentials=false 설정으로 호출해야 한다.
|
|
// config.withCredentials = !config.url.startsWith('/api/public/');
|
|
console.log("Test Url : "+ config.url);
|
|
/*if(config.url == '/api/auth/login'){
|
|
config.baseURL = "http://localhost:3000";
|
|
}*/
|
|
return config;
|
|
};
|
|
|
|
const tokenInterceptor = config => {
|
|
if(tokenSvc.getAuthorization(consts.tokenPart1) != null){
|
|
config.headers.Authorization = tokenSvc.getAuthorization(consts.tokenPart1);
|
|
//console.log("getToken : "+config.headers.Authorization);
|
|
//config.headers.Authorization = tokenSvc.getToken();
|
|
}
|
|
return config;
|
|
}
|
|
|
|
const loggerInterceptor = config => {
|
|
//console.log('testProp:', testProp);
|
|
//console.log('request url:', config.url, 'params:', config.data);
|
|
return config;
|
|
};
|
|
|
|
let loadOverlap = [];
|
|
const loadingLayer = (type, config) => {
|
|
/*
|
|
get: httpClient.get(url, { params: { ... }, headers: {"show-layer": "Yes"} }) // in 2nd property
|
|
post: httpClient.post(url, params, { headers: {"show-layer": "Yes"} }) // 3rd property
|
|
*/
|
|
if (config.headers['Show-Layer'] == 'Yes') {
|
|
if (type) {
|
|
loadOverlap.push('add');
|
|
} else {
|
|
loadOverlap.pop();
|
|
}
|
|
|
|
if (loadOverlap.length > 0) {
|
|
document.querySelector('html > body').style.overflow = 'hidden'; // 스크롤 block
|
|
document.getElementsByClassName('loading_layer')[0].style.display = 'block';
|
|
} else {
|
|
document.querySelector('html > body').style.removeProperty('overflow'); // 스크롤 allow
|
|
document.getElementsByClassName('loading_layer')[0].style.display = 'none';
|
|
}
|
|
}
|
|
};
|
|
|
|
/*const loadingLayerInterceptor = config => {
|
|
loadingLayer(true, config);
|
|
return config;
|
|
};*/
|
|
|
|
/** Adding the request interceptors */
|
|
httpClient.interceptors.request.use(authInterceptor);
|
|
httpClient.interceptors.request.use(tokenInterceptor);
|
|
httpClient.interceptors.request.use(loggerInterceptor);
|
|
//httpClient.interceptors.request.use(loadingLayerInterceptor);
|
|
|
|
/** Adding the response interceptors */
|
|
httpClient.interceptors.response.use(
|
|
response => {
|
|
//loadingLayer(false, response.config);
|
|
console.log('response status:', response.status, 'data:', response.data);
|
|
return response;
|
|
},
|
|
error => {
|
|
console.log(error);
|
|
if (error.response != undefined && error.response != null) loadingLayer(false, error.response.config);
|
|
else loadingLayer(false, error.config);
|
|
|
|
if (error.code === 'ECONNABORTED') {
|
|
alert('서비스가 지연되고 있습니다. 잠시 후 확인하시고 다시 시도해주세요.');
|
|
return Promise.reject(error);
|
|
} else if(error.response.status == 401){
|
|
alert('세션이 만료되었습니다.');
|
|
tokenSvc.removeToken();
|
|
window.top.location.href = '/login';
|
|
} else if (error.response.status == 418) {
|
|
|
|
}else if (error.response.status == 500) {
|
|
if (error.response.data != null && error.response.data.message == '511 NETWORK_AUTHENTICATION_REQUIRED') {
|
|
alert('웹템플릿 IP가 브랜드포털에 등록이 필요합니다. 기술지원에 문의해주세요.');
|
|
return Promise.reject(error);
|
|
} else {
|
|
tokenSvc.removeToken();
|
|
window.top.location.href = '/login';
|
|
}
|
|
} else if (error.response.status == 511) {
|
|
alert('웹템플릿 IP가 브랜드포털에 등록이 필요합니다. 기술지원에 문의해주세요.');
|
|
return Promise.reject(error);
|
|
} else if (error.message == 'Network Error') {
|
|
alert('네트워크 오류가 발생했습니다. 잠시 후 다시 시도해주세요.');
|
|
return Promise.reject(error);
|
|
} else {
|
|
alert("else");
|
|
console.log('response error:', error);
|
|
return Promise.reject(error);
|
|
}
|
|
}
|
|
);
|
|
|
|
export default httpClient;
|