config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import ENV_CONFIG from '@/.env.js'
  2. // api前缀
  3. export const HTTP_URL_DEV_PREFIX = '/api'
  4. export const HTTP_URL_PROD_PREFIX = '/api'
  5. const env = ENV_CONFIG[process.env.ENV_TYPE || 'dev'];
  6. // 基于uview-ui的http配置
  7. export const UVIEWUI_HTTP_CONFIG = {
  8. // 地址
  9. baseUrl: env.apiUrl + env.apiUrlPrefix,
  10. // 请求方式
  11. method: 'post',
  12. // 参数类型
  13. dataType: 'json',
  14. // 是否显示请求中的loading
  15. showLoading: true,
  16. // 请求loading中的文字提示
  17. loadingText: '请求中...',
  18. // 在此时间内,请求还没回来的话,就显示加载中动画,单位ms
  19. loadingTime: 800,
  20. // 是否在拦截器中返回服务端的原始数据
  21. originalData: true,
  22. // 展示loading的时候,是否给一个透明的蒙层,防止触摸穿透
  23. loadingMask: true,
  24. // header:{
  25. // token:uni.getStorageSync('token')
  26. // },
  27. }
  28. // 此处配置请求拦截器
  29. export const httpRequest = (config) => {
  30. const token = uni.getStorageSync('token');
  31. config.header.Authorization = token ? `Bearer ${token}` : ''
  32. return config;
  33. }
  34. // 此处配置响应拦截器
  35. export const httpResponse = (res) => {
  36. return new Promise(function(resolve, reject) {
  37. if (res.statusCode == 200) {
  38. console.log('成功>>>>', res.data);
  39. if (res.data.code == 0) {
  40. uni.showToast({
  41. icon: 'none',
  42. title: res.data.msg
  43. })
  44. return reject(res.data);
  45. }
  46. if (res.data.code == 401) {
  47. console.log('接口未登录>>>>401');
  48. // 未登录
  49. uni.removeStorageSync('token');
  50. uni.switchTab({
  51. url: '/pages/home/index'
  52. })
  53. return reject(res.data);
  54. }
  55. return resolve(res.data);
  56. }
  57. if (res.statusCode == 401) {
  58. console.log('未登录>>>>');
  59. // 未登录
  60. uni.switchTab({
  61. url: '/pages/home/index'
  62. })
  63. uni.removeStorageSync('token');
  64. return reject(res.data);
  65. }
  66. if (res.statusCode == 500) {
  67. console.log('服务器异常>>>>500');
  68. uni.showToast({
  69. title: '服务器异常,请联系客服!',
  70. icon: 'none',
  71. duration: 3000
  72. })
  73. return reject(res.data);
  74. }
  75. return resolve(res.data);
  76. })
  77. }
  78. // http安装方法
  79. export const installHttpConfig = (Vue, vm) => {
  80. Vue.prototype.$u.http.setConfig(UVIEWUI_HTTP_CONFIG);
  81. Vue.prototype.$u.http.interceptor.request = httpRequest
  82. Vue.prototype.$u.http.interceptor.response = httpResponse
  83. }