interceptors.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import Taro from "@tarojs/taro"
  2. import { pageToLogin } from "./utils"
  3. import { HTTP_STATUS } from './config'
  4. const customInterceptor = (chain) => {
  5. const requestParams = chain.requestParams
  6. return chain.proceed(requestParams).then(res => {
  7. console.log(res,'proceed')
  8. // 只要请求成功,不管返回什么状态码,都走这个回调
  9. if (res.statusCode === HTTP_STATUS.NOT_FOUND) {
  10. return Promise.reject("请求资源不存在")
  11. } else if (res.statusCode === HTTP_STATUS.BAD_GATEWAY) {
  12. return Promise.reject("服务端出现了问题")
  13. } else if (res.statusCode === HTTP_STATUS.FORBIDDEN || res.statusCode === HTTP_STATUS.NO_PERMISSION) {
  14. Taro.setStorageSync("token", "")
  15. pageToLogin()
  16. // TODO 根据自身业务修改
  17. return;
  18. } else if (res.statusCode === HTTP_STATUS.AUTHENTICATE) {
  19. Taro.setStorageSync("Authorization", "")
  20. pageToLogin()
  21. return Promise.reject("需要鉴权")
  22. } else if (res.statusCode === HTTP_STATUS.SUCCESS) {
  23. if(res.data.error.length !== 0 && res.data.error[0].field === '403'){
  24. Taro.setStorageSync("token", "")
  25. pageToLogin()
  26. }
  27. return res.data
  28. }
  29. })
  30. }
  31. const interceptors = [customInterceptor, Taro.interceptors.logInterceptor]
  32. export default interceptors