request.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import axios from 'axios'
  2. import router from '@/router'
  3. import { Toast } from 'vant'
  4. import {showLoading,hideLoading} from './loading'
  5. // 根据环境不同引入不同api地址
  6. import { baseApi } from '@/config'
  7. // create an axios instance
  8. const service = axios.create({
  9. baseURL: baseApi, // url = base api url + request url
  10. // baseURL: 'http://10.87.10.55:8080', // url = base api url + request url
  11. withCredentials: false, // send cookies when cross-domain requests
  12. timeout: 15000 // request timeout
  13. })
  14. let loading;
  15. // request拦截器
  16. service.interceptors.request.use(
  17. config => {
  18. // 不传递默认开启loading
  19. if (!config.hideLoading) {
  20. // loading
  21. // loading = Toast.loading({
  22. // duration: 0, // 持续展示 toast
  23. // forbidClick: true
  24. // })
  25. showLoading()
  26. // loading = Loading.service({
  27. // lock: true,
  28. // background: 'rgba(0, 0, 0, 0.5)'
  29. // })
  30. }
  31. const token = sessionStorage.getItem('access_token');
  32. if (token) {
  33. config.headers['Authorization'] = 'Bearer ' + token;
  34. }
  35. return config
  36. },
  37. error => {
  38. // do something with request error
  39. console.log(error) // for debug
  40. return Promise.reject(error)
  41. }
  42. )
  43. let success = response => {
  44. //loading.close();
  45. setTimeout(()=>{ hideLoading()},200)
  46. // 二进制数据则直接返回
  47. if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') {
  48. return response.data
  49. }
  50. let res = response.data;
  51. if(res.code === 200){
  52. return res;
  53. }
  54. if (res.code === 401) {
  55. Toast.fail(res.msg);
  56. sessionStorage.clear();
  57. router.push('/login');
  58. return Promise.reject(res.msg);
  59. }
  60. if (res.code === 500) {
  61. Toast.fail({ message: res.msg, position: 'top' });
  62. return Promise.reject(res.msg);
  63. }
  64. Toast.fail(res.msg);
  65. return Promise.reject(res.msg);
  66. }
  67. let error = error => {
  68. hideLoading()
  69. //loading.close();
  70. console.log('err' + error)
  71. Toast.fail('请求异常,请稍后重试');
  72. return Promise.reject(error)
  73. }
  74. // respone拦截器
  75. service.interceptors.response.use(success,error);
  76. export default service