http.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import axios from 'axios'
  2. // 配置请求域名
  3. axios.defaults.baseURL = 'https://test.4dkankan.com/api'
  4. // axios.defaults.baseURL = 'http://192.168.0.10:8080/api'
  5. axios.interceptors.request.use(function (config) {
  6. config.headers['Content-Type'] = 'application/json;charset=UTF-8'
  7. return config
  8. }, function (error) {
  9. return Promise.reject(error)
  10. })
  11. axios.setToken = function (token) {
  12. if (!token) {
  13. token = sessionStorage.getItem('token')
  14. }
  15. if (token) {
  16. axios.defaults.headers.common['token'] = token
  17. sessionStorage.setItem('token', token)
  18. }
  19. }
  20. axios.setToken()
  21. axios.removeToken = function (token) {
  22. delete axios.defaults.headers.common['token']
  23. sessionStorage.removeItem('token')
  24. }
  25. const notLogins = ['/sso/manager/login']
  26. function setHandle (router) {
  27. axios.interceptors.request.use(function (config) {
  28. if ((!config.headers.token && !config.headers.common.token) && !~notLogins.indexOf(config.url)) {
  29. router.replace('login')
  30. return false
  31. } else {
  32. return config
  33. }
  34. }, function (error) {
  35. return Promise.reject(error)
  36. })
  37. // 配置response拦截器
  38. axios.interceptors.response.use(
  39. response => {
  40. let data = response.data
  41. let code = data.code
  42. switch (code) {
  43. case 3002:
  44. axios.removeToken()
  45. router.replace('login')
  46. break
  47. case 3004:
  48. case 3001:
  49. router.replace('login')
  50. break
  51. }
  52. return data
  53. },
  54. error => {
  55. if (error.response) {
  56. switch (error.response.status) {
  57. case 500:
  58. // Message({
  59. // customClass: 'system-err',
  60. // type: 'error',
  61. // message: '服务器错误!'
  62. // })
  63. break
  64. }
  65. }
  66. return Promise.reject(error.response.data)
  67. }
  68. )
  69. }
  70. export { setHandle }
  71. export default axios