小说后台管理系统
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.
 
 
 

100 lines
2.3 KiB

  1. import axios from 'axios'
  2. import { Message } from 'element-ui'
  3. import { getToken } from '@/utils/auth'
  4. import qs from 'qs'
  5. // create an axios instance
  6. const service = axios.create({
  7. baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  8. // withCredentials: true, // send cookies when cross-domain requests
  9. timeout: 5000, // request timeout
  10. withCredentials: true
  11. })
  12. // request interceptor
  13. service.interceptors.request.use(
  14. config => {
  15. // do something before request is sent
  16. config.headers['Content-Type'] = 'application/x-www-form-urlencoded';
  17. config.headers['api-token'] = getToken() || ''
  18. var formData = new FormData()
  19. for(let i in config.data) {
  20. formData.append(i, JSON.stringify(config.data[i]))
  21. }
  22. config.data = formData
  23. return config
  24. },
  25. error => {
  26. // do something with request error
  27. console.log(error) // for debug
  28. return Promise.reject(error)
  29. }
  30. )
  31. // response interceptor
  32. service.interceptors.response.use(
  33. /**
  34. * If you want to get http information such as headers or status
  35. * Please return response => response
  36. */
  37. /**
  38. * Determine the request status by custom code
  39. * Here is just an example
  40. * You can also judge the status by HTTP Status Code
  41. */
  42. response => {
  43. const res = response.data
  44. console.log(res)
  45. // if the custom code is not 20000, it is judged as an error.
  46. if (res.error_code !== 0) {
  47. Message({
  48. message: res.message || 'Error',
  49. type: 'error',
  50. duration: 5 * 1000
  51. })
  52. return Promise.reject(new Error(res.message || 'Error'))
  53. } else {
  54. return res
  55. }
  56. },
  57. error => {
  58. console.log(error)
  59. // const errorMsg = error.response.data.msg
  60. // 特殊处理401,需要验证手机号
  61. if (error.response.data.code === 401) {
  62. return error.response.data
  63. }
  64. // 登录超时,重新登录
  65. if (error.response.data.code === 403) {
  66. store.dispatch('user/resetToken').then(() => {
  67. location.reload()
  68. })
  69. Message({
  70. message: '登录超时,请重新登录',
  71. type: 'error',
  72. duration: 5 * 1000
  73. })
  74. return
  75. }
  76. Message({
  77. message: errorMsg ?? error,
  78. type: 'error',
  79. duration: 5 * 1000
  80. })
  81. return Promise.reject(error)
  82. }
  83. )
  84. export default service