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