axios.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import Taro from '@tarojs/taro'
  2. import Axios from 'axios'
  3. import { OPEN_ID_STORAGE_KEY } from '../constant'
  4. import { getUserInfo } from '../utils/auth'
  5. import sign from './sign'
  6. const axiosIns = Axios.create({
  7. siren: false,
  8. })
  9. export const getSimpleHeader = () => {
  10. const headers = {}
  11. const userInfo = getUserInfo()
  12. headers['X-Enniu-End'] = 'mp'
  13. if (userInfo.userId && userInfo.token) {
  14. headers.userId = `${userInfo.userId}`
  15. headers.Authorization = `encrypt ${userInfo.token}`
  16. }
  17. return headers
  18. };
  19. export const getHeaders = async (config) => {
  20. const userInfo = await getUserInfo()
  21. // console.log('userInfo', userInfo)
  22. config.params = config.params || {}
  23. config.headers = config.headers || {}
  24. config.headers['X-Enniu-End'] = 'mp'
  25. if (userInfo.userId && userInfo.token) {
  26. config.headers.userId = `${userInfo.userId}`
  27. config.headers.Authorization = `encrypt ${userInfo.token}`
  28. }
  29. const openId = Taro.getStorageInfoSync(OPEN_ID_STORAGE_KEY)
  30. config.headers.openId = `${openId}`
  31. await sign(config)
  32. return config
  33. };
  34. axiosIns.interceptors.request.use(async (config) => {
  35. try {
  36. return getHeaders(config)
  37. } catch (e) {
  38. console.log(e)
  39. }
  40. })
  41. axiosIns.interceptors.response.use(
  42. (response) => {
  43. if (response.headers && response.headers.token && response.headers.userId) {
  44. Taro.setStorageSync('hasLogin', '1') // 已经登录过,可以认为微信号跟手机号绑定了,后面可以只授权微信信息登录
  45. Taro.setStorageSync('u51UserId', response.headers.userId)
  46. Taro.setStorageSync('u51UserToken', response.headers.token)
  47. }
  48. return response
  49. },
  50. async (err) => {
  51. console.log(err)
  52. const config = err.config
  53. let error = {}
  54. // if (ignoreError((err.config || {}).url)) {
  55. // return Promise.reject(err)
  56. // }
  57. if (err.response && err.response.data) {
  58. error = err.response.data.errors
  59. ? err.response.data.errors[0]
  60. : err.response.data
  61. }
  62. if (error.code === 401) {
  63. Taro.setStorageSync('hasLogin', '0')
  64. Taro.switchTab({
  65. url: '/pages/personal/index',
  66. });
  67. // Taro.navigateTo({
  68. // url: '/pages/login/index'
  69. // })
  70. return Promise.reject(error)
  71. } else if (error.code === 1020 || error.code === 1021) {
  72. return error
  73. } else if (
  74. error &&
  75. error.message &&
  76. error.message.indexOf('timeout') === 0
  77. ) {
  78. if (!config.omitError) {
  79. Taro.showToast({
  80. title: '网络异常',
  81. icon: 'none',
  82. })
  83. }
  84. } else if (error.message) {
  85. if (!config.omitError) {
  86. Taro.showToast({
  87. title: error.message,
  88. icon: 'none',
  89. })
  90. }
  91. } else {
  92. if (!config.omitError) {
  93. Taro.showToast({
  94. title: '出了点问题,暂时加载不出来,请稍后再来吧',
  95. icon: 'none',
  96. })
  97. }
  98. }
  99. return Promise.reject(err)
  100. },
  101. )
  102. export default axiosIns