request.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import util from '@/common/util.js';
  2. let codeList = [9000003, 9000006, 9000004, 9000005]
  3. // 此vm参数为页面的实例,可以通过它引用vuex中的变量
  4. module.exports = (vm) => {
  5. // 初始化请求配置
  6. uni.$u.http.setConfig((config) => {
  7. /* config 为默认全局配置*/
  8. config.baseURL = 'http://192.168.0.153:8589/api'; /* 根域名 */
  9. // config.baseURL = 'http://119.45.192.122:1222/api/api'; /* 根域名 */
  10. // config.baseURL = 'http://frp.songlanyun.com:8801/prod-api/';
  11. // config.baseURL ="http://csadi.songlanyun.com/prod-api/"
  12. return config
  13. })
  14. // 请求拦截
  15. uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
  16. // 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}
  17. config.data = config.data || {}
  18. // 根据custom参数中配置的是否需要token,添加对应的请求头
  19. // if(config?.custom?.auth) {
  20. // }
  21. config.header.Authorization = 'Bearer ' + uni.getStorageSync('TOKEN')
  22. return config
  23. }, config => { // 可使用async await 做异步操作
  24. return Promise.reject(config)
  25. })
  26. // 响应拦截
  27. uni.$u.http.interceptors.response.use((response) => {
  28. /* 对响应成功做点什么 可使用async await 做异步操作*/
  29. const data = response.data
  30. // 自定义参数
  31. const custom = response.config?.custom
  32. if (data.code !== 200) {
  33. if(codeList.indexOf(data.code) != -1){
  34. return data;
  35. }
  36. // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
  37. if (custom.toast !== false) {
  38. uni.$u.toast(data.msg);
  39. // return Promise.reject(data)
  40. }
  41. if (data.code == 401) {
  42. uni.reLaunch({
  43. url: 'pages/login'
  44. });
  45. }
  46. // 如果需要catch返回,则进行reject
  47. if (custom?.catch) {
  48. return Promise.reject(data)
  49. } else {
  50. // 否则返回一个pending中的promise,请求不会进入catch中
  51. return new Promise(() => {})
  52. }
  53. }
  54. // return data.data === undefined ? {} : data
  55. return data
  56. }, (response) => {
  57. // 对响应错误做点什么 (statusCode !== 200)
  58. return Promise.reject(response)
  59. })
  60. }