axios.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import axios from 'axios'
  2. import {Message} from 'element-ui'
  3. import {
  4. getToken,
  5. setToken
  6. } from './auth.js'
  7. import qs from 'qs'
  8. const service = axios.create({
  9. baseURL: process.env.VUE_APP_BASE_API, // api的base_url
  10. // baseURL:'https://ding.insys.g107.com/',
  11. timeout: 15000,
  12. headers: {
  13. 'Content-Type': 'application/x-www-form-urlencoded',
  14. },
  15. transformRequest: [function(data) {
  16. return qs.stringify(data)
  17. }]
  18. })
  19. service.interceptors.request.use(
  20. config => {
  21. if (getToken()) {
  22. config.headers['A-Token'] = getToken()
  23. // config.headers['A-Token'] = ' eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvdGVzdC1kaW5nLmcxMDcuY29tXC9hcGlcL2RpbmdcL2xvZ2luIiwiaWF0IjoxNjA4MTAxMTUwLCJleHAiOjE2MDg3MDExNTAsIm5iZiI6MTYwODEwMTE1MCwianRpIjoiRzd0VURhUmNaYTg4bjF2cyIsInN1YiI6MTY2LCJwcnYiOiJjYTY0ODlkNTBmMjQwN2E2NzgzMGU4MDkwZDAxNDg4MzU2ODU5NjJiIiwicm9sZSI6ImVtcGxveWVlIn0.RIZhoHAsj4Ru_Ap3sKgyfiG1fayG1Hgw7si9aekU8eE'
  24. }
  25. // if (config.url == '/api/integral/statistics/ranking' || config.url == '/api/integral/review/apply'|| config.url == '/api/rule/import') {
  26. // config.headers['Accept'] = 'application/vnd.test.v2+json'
  27. // }
  28. // if (config.url == '/api/integral/statistics/integral') {
  29. // config.headers['Accept'] = 'application/json, text/plain, */*';
  30. // }
  31. return config
  32. },
  33. error => {
  34. Promise.reject(error)
  35. }
  36. )
  37. // respone interceptor
  38. service.interceptors.response.use(
  39. response => {
  40. if (response.data.code === 1) {
  41. if(response.data.data.token){
  42. setToken(response.data.data.token);
  43. }else if (response.data.refresh_token) {
  44. if (response.data.refresh_token !== getToken()) {
  45. setToken(response.data.refresh_token);
  46. }
  47. }
  48. return response;
  49. } else if (response.data.code === 401) {
  50. Message({
  51. message: response.data.msg,
  52. type: 'error',
  53. })
  54. return Promise.reject(response.data.msg)
  55. }else{
  56. Message({
  57. message: response.data.msg,
  58. type: 'error',
  59. })
  60. return Promise.reject(response.data.msg)
  61. }
  62. },
  63. error => {
  64. // console.log(error)
  65. if(error.message=='interrupt'){
  66. // Message({
  67. // message: '请勿频繁切换页面',
  68. // type: 'warning',
  69. // })
  70. return Promise.reject(error.message)
  71. }else if(error.message=='Network Error'){
  72. Message({
  73. message: '网络异常,请检查网络是否畅通,再重新进入应用',
  74. type: 'error',
  75. })
  76. return Promise.reject(error.message)
  77. }else if(error.message=='timeout of 15000ms exceeded'){
  78. Message({
  79. message: '请求超时,请稍后再试',
  80. type: 'error',
  81. })
  82. return Promise.reject(error.message)
  83. }else{
  84. Message({
  85. message: error.message,
  86. type: 'error',
  87. })
  88. return Promise.reject(error.message)
  89. }
  90. }
  91. )
  92. export default service