request.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import axios from 'axios'
  2. import storage from 'store2'
  3. import notification from 'ant-design-vue/es/notification'
  4. import { VueAxios } from './axios'
  5. // 创建 axios 实例
  6. const request = axios.create({
  7. // API 请求的默认前缀
  8. baseURL: process.env.VUE_APP_API_BASE_URL,
  9. timeout: 60000, // 请求超时时间
  10. //headers: {'Content-Type': 'multipart/form-data'}
  11. })
  12. // 异常拦截处理器
  13. const errorHandler = (error) => {
  14. if (error.response) {
  15. const data = error.response.data
  16. if (error.response.status === 403) {
  17. notification.error({
  18. message: 'Forbidden',
  19. description: data.message
  20. })
  21. }
  22. if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
  23. notification.error({
  24. message: 'Unauthorized',
  25. description: 'Authorization verification failed'
  26. })
  27. }
  28. }
  29. return Promise.reject(error)
  30. }
  31. // request interceptor
  32. request.interceptors.request.use(config => {
  33. const token = storage.get('token')
  34. // 如果 token 存在
  35. // 让每个请求携带自定义 token 请根据实际情况自行修改
  36. if (token) {
  37. config.headers['Access-Token'] = token
  38. }
  39. return config
  40. }, errorHandler)
  41. // response interceptor
  42. request.interceptors.response.use((response) => {
  43. return response.data
  44. }, errorHandler)
  45. const installer = {
  46. vm: {},
  47. install (Vue) {
  48. Vue.use(VueAxios, request)
  49. }
  50. }
  51. export default request
  52. export {
  53. installer as VueAxios,
  54. request as axios
  55. }