当前位置:   article > 正文

axios封装处理_router.push(`/login?redirecturl=${encodeuricompone

router.push(`/login?redirecturl=${encodeuricomponent(route.path)}`)
  1. import axios from 'axios'
  2. import store from '@/store'
  3. import router from '@/router'
  4. // 1.实例化 create方法
  5. // baseURL 接口根路径
  6. // timeout 接口最长等待时间
  7. const instance = axios.create({
  8. baseURL: 'http://pcapi-xiaotuxian-front.itheima.net/',
  9. timeout: 5000
  10. })
  11. // 2.请求拦截器
  12. // 全局注入token
  13. // 请求拦截器支持多个,会按照先添加后执行的顺序依次执行 前面执行的拦截器处理后的config会作为后面拦截器的入参继续处理
  14. // 多个拦截器处理完毕的config回作为接口的正式请求参数
  15. instance.interceptors.request.use(config => {
  16. // 1.获取token
  17. const { token } = store.state.user.profile
  18. // 2.请求头设置token
  19. if (token) config.headers.Authorization = `Bearer ${token}`
  20. return config
  21. }, e => Promise.reject(e))
  22. // 3. 响应拦截器
  23. // 监控http状态码 401
  24. // const {success,data} =res
  25. // if(success){return data} else{return Promise.reject(e)}
  26. instance.interceptors.request.use(
  27. (response) => {
  28. return response
  29. },
  30. (e) => {
  31. if (e.response && e.response.status === 401) {
  32. const redirectUrl = encodeURIComponent(router.currentRoute.value.fullPath)
  33. router.push('/login?redirectUrl=' + redirectUrl)
  34. }
  35. return Promise.reject(e)
  36. }
  37. )
  38. /**
  39. * @description: axios请求的封装方法
  40. * @param {*} url 请求路径
  41. * @param {*} method 请求方法
  42. * @param {*} reqData 请求参数(必须是对象类型)
  43. * @return {*} promise对象
  44. */
  45. export default function request (url, method, reqData) {
  46. return instance({
  47. url,
  48. method,
  49. [method.toLowerCase() === 'get' ? 'params' : 'data']: reqData
  50. })
  51. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/307119
推荐阅读
相关标签
  

闽ICP备14008679号