fei.wang
2025-04-30 722da005a5ec126bedf752ac6bd5c5c7f6172155
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// 此vm参数为页面的实例,可以通过它引用vuex中的变量
import store from '@/store/index.js'
// let globalConfig = uni.$u.http.setConfig(); // 获取全局配置
const globalConfig = uni.$u.http
function updateBaseURL(newBaseURL) {
    console.log(newBaseURL);
    store.commit('$tStore', {
            name: 'newBaseURL',
            value: newBaseURL
        })
  globalConfig.baseURL = newBaseURL; // 更新 baseURL
  globalConfig.config.baseURL=newBaseURL
  // uni.$u.http.setConfig(globalConfig); // 重新设置全局配置
}
module.exports = (vm) => { 
    // 初始化请求配置
    uni.$u.http.setConfig((config) => { 
        console.log(uni.getStorageSync('newBaseURL'));
        console.log(store.newBaseURL);
        // console.log(config);
        /* config 为默认全局配置*/ 
        // config.baseURL = 'http://39.106.210.13:8090'; /* 测试-根域名 */ 
        // config.baseURL = 'http://160.202.231.180:8090'; /* 测试-根域名 */  
        
        config.baseURL = uni.getStorageSync('newBaseURL')== ''? 'http://123.117.152.120:8090' : uni.getStorageSync('newBaseURL')    ; /* 测试-根域名 */  
        // config.baseURL = uni.getStorageSync('newBaseURL')== ''? 'http://192.168.5.121:8090' : uni.getStorageSync('newBaseURL')    ; /* 测试-根域名 */
         
        // config.baseURL = 'http://123.117.152.120:8090'; /* 测试-根域名 */  
        // config.baseURL = 'http://111.198.60.6:8090'; /* 正式-根域名 */  
        // config.baseURL = 'http://192.168.5.121:8090'; /* 正式-根域名 */  
        config.custom = { 
            auth: true 
        }
        config.dataType = 'json'
        return config 
    }) 
 
 
    // 请求拦截
    uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
        // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
        config.data = config.data || {}
        // 根据custom参数中配置的是否需要token,添加对应的请求头
        if (config?.custom?.auth) {
            // 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中
            config.header.Authorization = uni.getStorageSync('access_token')
        }
        return config
    }, config => { // 可使用async await 做异步操作
        return Promise.reject(config)
    })
 
    // 响应拦截
    uni.$u.http.interceptors.response.use((response) => {
        /* 对响应成功做点什么 可使用async await 做异步操作*/
        // console.info('response',response)
        const data = response.data
        // 自定义参数
        const custom = response.config?.custom
        if (!data.success) {
            // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
            if (custom.toast !== false) {
                // uni.$u.toast(data.message)
            }
 
            // 如果需要catch返回,则进行reject
            if (custom?.catch) {
                // return Promise.reject(data)
            } else {
                // 否则返回一个pending中的promise,请求不会进入catch中
                // return new Promise(() => {})
            }
        }
        return data.data === undefined ? {} : data
    }, (response) => {
        // 对响应错误做点什么 (statusCode !== 200)
        // console.info('response-error',response)
        // if (response.statusCode == 401) {
        //     store.commit('$tStore', {
        //         name: 'vuex_is_login',
        //         value: false
        //     })
        //     // uni.reLaunch({
        //     //     url: '/pages/index/login'
        //     // });
        // }
        return Promise.reject(response)
    })
}
// 导出 updateBaseURL 函数,以便在其他文件中调用
module.exports.updateBaseURL = updateBaseURL;