github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/ui/src/utils/request.js (about) 1 import notification from 'ant-design-vue/es/notification' 2 import axios, {AxiosInstance} from 'axios' 3 import { getElectron } from "./common"; 4 5 let serverUrl = '' 6 let request = null 7 initRequest() 8 9 // used to switch to another remote service 10 function initRequest(remoteUrl) { 11 serverUrl = remoteUrl ? remoteUrl : getUrl() 12 13 request = axios.create({ 14 baseURL: serverUrl, 15 timeout: 100000, 16 }) 17 } 18 19 function getUrl() { 20 let url = '' 21 if (process.env.NODE_ENV === "development") { 22 url = 'http://localhost:8848' 23 console.log('dev env, url is ' + url) 24 } else if(getElectron()){ 25 url = 'http://localhost:55234' 26 console.log('product in client, url is ' + url) 27 } else { 28 const location = decodeURI(window.location.href); 29 url = location.split('ui')[0]; 30 console.log('prod env, url is ' + url) 31 } 32 33 return url 34 35 } 36 37 const errorHandler = error => { 38 if (error.response) { 39 const data = error.response.data 40 41 if (error.response.status === 403) { 42 notification.error({ 43 message: 'Forbidden', 44 description: data.message 45 }) 46 } 47 if (error.response.status === 401) { 48 notification.error({ 49 message: 'Unauthorized', 50 description: 'Authorization verification failed' 51 }) 52 } 53 } 54 return Promise.reject(error) 55 } 56 57 // request interceptor 58 request.interceptors.request.use(config => { 59 console.log('---Request---', config.url, config); 60 return config 61 }, errorHandler) 62 63 // response interceptor 64 request.interceptors.response.use(resp => { 65 console.log('---Response---', resp.config.url, resp.data); 66 return resp.data 67 }, errorHandler) 68 69 export {serverUrl} 70 export default request