axios.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. // await customCallback()
  64. return Promise.reject(error)
  65. } else if (error.code === 1020 || error.code === 1021) {
  66. return error
  67. } else if (
  68. error &&
  69. error.message &&
  70. error.message.indexOf('timeout') === 0
  71. ) {
  72. if (!config.omitError) {
  73. Taro.showToast({
  74. title: '网络异常',
  75. icon: 'none',
  76. })
  77. }
  78. } else if (error.message) {
  79. if (!config.omitError) {
  80. Taro.showToast({
  81. title: error.message,
  82. icon: 'none',
  83. })
  84. }
  85. } else {
  86. if (!config.omitError) {
  87. Taro.showToast({
  88. title: '出了点问题,暂时加载不出来,请稍后再来吧',
  89. icon: 'none',
  90. })
  91. }
  92. }
  93. return Promise.reject(err)
  94. },
  95. )
  96. export default axiosIns