完整代码

  1. import axios from 'axios'
  2. //import CancelStore from '@/axios/store';
  3. import { getHeader } from '@/axios/header'
  4. import { Message, MessageBox } from 'element-ui'
  5. let baseURL = process.env.baseURL1;
  6. // if (process.env.NODE_ENV === "development") {
  7. // baseURL = process.env.baseURL;
  8. // } else {
  9. // baseURL = process.env.baseURL;
  10. // }
  11. // axios.defaults.timeout = 30000;
  12. // axios.defaults.retry = 1;
  13. // axios.defaults.retryDelay = 1000;
  14. //const CancelToken = axios.CancelToken;
  15. // 创建axios实例
  16. const service = axios.create({
  17. baseURL: baseURL, // api 的 base_url
  18. timeout: 30000 // 请求超时时间
  19. })
  20. // request拦截器
  21. service.interceptors.request.use(
  22. config => {
  23. // 这个是 取消重点
  24. //config.cancelToken = new CancelToken((cancel) => {
  25. // CancelStore._axiosPromiseCancel.push(cancel);
  26. //});
  27. let url = config.url.replace(config.baseURL,'');
  28. let code = config.code;
  29. config.headers = getHeader(url, code) // 让每个请求携带自定义签名
  30. return config
  31. },
  32. error => {
  33. console.log(error) // for debug 11
  34. Promise.reject(error)
  35. }
  36. )
  37. // response 拦截器
  38. service.interceptors.response.use(
  39. response => {
  40. if(response.config.responseType=='blob'){
  41. if(response.status==200){
  42. return response;
  43. }else{
  44. return Promise.reject(error);
  45. }
  46. }else{
  47. const res = response.data;
  48. if (res.code === 200) {
  49. return response.data
  50. } else if(res.code === 407){
  51. // console.log("Token失效跳转登陆页面");
  52. // sessionStorage.clear();
  53. // location.href="/ecloud-sp/logout";
  54. } else {
  55. Message({
  56. message: res.message,
  57. type: 'error',
  58. duration: 5 * 1000
  59. })
  60. return Promise.reject('error')
  61. }
  62. }
  63. },
  64. error => {
  65. console.log('err' + error) // for debug
  66. // if (axios.isCancel(error)) {
  67. // // 为了终结promise链 就是实际请求 不会走到.catch(rej=>{});这样就不会触发错误提示之类了。
  68. // return new Promise(() => {});
  69. // } else {
  70. Message({
  71. message: error.message,
  72. type: 'error',
  73. duration: 5 * 1000
  74. })
  75. return Promise.reject(error)
  76. // }
  77. }
  78. )
  79. export default service

封装接口

import request from '@/axios/requestCooperation'
export function getAdviceList(data) {
  return request({
    url: '/api/v1/resource/adviceList',
    method: 'post',
    data,
    code: "v4"
  })
}

请求头封装

import $md5 from 'js-md5'

export function getHeader(url, code) {
  let timestamp = new Date() * 1;
  let token = sessionStorage.getItem('user_token') === null? "" : sessionStorage.getItem('user_token');
  let source = 'web';
  let sign =  $md5(source + url + code + timestamp + token);
  return {'Content-Type': 'application/json; charset=UTF-8', 'token': token,'timestamp': timestamp, 'code': code, 'sign':sign, 'source':source };

}