You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

84 lines
2.6 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
4 years ago
5 years ago
  1. import axios from 'axios'
  2. import { Message } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. import router from '@/router'
  6. var curlDomain=window.location.protocol+"//"+window.location.host; // 返回https://mp.csdn.net
  7. var baseApiUrl="";
  8. if(process.env.BASE_API ){
  9. if(process.env.BASE_API.indexOf("http")<0 && process.env.BASE_API.indexOf("wwww.")<0){
  10. baseApiUrl=curlDomain+"/"+process.env.BASE_API+"/"+process.env.VERSION;
  11. }else{
  12. baseApiUrl=process.env.BASE_API+"/"+process.env.VERSION;
  13. }
  14. }else{
  15. baseApiUrl=curlDomain+"/api/"+process.env.VERSION
  16. }
  17. var indexOfHttp=baseApiUrl.indexOf("://");
  18. if(indexOfHttp>0){
  19. baseApiUrl=baseApiUrl.substr(0,indexOfHttp+3)+baseApiUrl.substr(indexOfHttp+3,baseApiUrl.length).replace("//","/");
  20. }else{
  21. baseApiUrl=baseApiUrl.replace("//","/")
  22. }
  23. // create an axios instance
  24. const service = axios.create({
  25. baseURL:baseApiUrl, // api的base_url
  26. timeout: 15000 // request timeout
  27. })
  28. // request interceptor
  29. service.interceptors.request.use(config => {
  30. // Do something before request is sent
  31. var token=getToken();
  32. if(token==null ||token=='' ||token=="" || token ==undefined ){
  33. return config;
  34. }else{
  35. config.headers['Authorization'] = 'Bearer '+token // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
  36. }
  37. return config
  38. }, error => {
  39. // Do something with request error
  40. console.log(error) // for debug
  41. Promise.reject(error)
  42. })
  43. // respone interceptor
  44. service.interceptors.response.use(
  45. response => {
  46. if(response.data && response.data.tips && response.data.tips.msg == 'Full authentication is required to access this resource'){
  47. Message.closeAll()
  48. Message.error('会话过期,请重新登陆')
  49. //response.data.tips.msg="会话过期,请重新登陆";
  50. store.dispatch('FedLogOut').then(() => {
  51. router.replace({path: '/login'})
  52. })
  53. }
  54. return response
  55. },
  56. error => {
  57. console.log(error)// for debug
  58. if(error.response){
  59. switch (error.response.status) {
  60. case 401:
  61. // 返回 401 清除token信息并跳转到登录页面
  62. Message.closeAll()
  63. Message.error('会话过期,请重新登陆')
  64. store.dispatch('FedLogOut').then(() => {
  65. router.replace({path: '/login'})
  66. })
  67. return;
  68. }
  69. }
  70. Message({
  71. showClose:true,
  72. message: '通讯错误',
  73. type: 'error',
  74. duration: 5 * 1000
  75. })
  76. return Promise.reject(error)
  77. })
  78. export default service