request.js 1.7 KB

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