request.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import axios from 'axios'
  2. import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus'
  3. axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
  4. // 创建axios实例
  5. const service = axios.create({
  6. // axios中请求配置有baseURL选项,表示请求URL公共部分
  7. baseURL: import.meta.env.VITE_APP_BASE_API,
  8. // 超时
  9. timeout: 10000
  10. })
  11. // request拦截器
  12. service.interceptors.request.use(
  13. (config) => {
  14. return config
  15. },
  16. (error) => {
  17. console.log(error)
  18. Promise.reject(error)
  19. }
  20. )
  21. // 响应拦截器
  22. service.interceptors.response.use(
  23. (res) => {
  24. // 未设置状态码则默认成功状态
  25. const code = res.data.code || 200
  26. // 获取错误信息
  27. const msg = errorCode[code] || res.data.msg || errorCode['default']
  28. // 二进制数据则直接返回
  29. if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') {
  30. return res.data
  31. }
  32. if (code === 401) {
  33. return Promise.reject('无效的会话')
  34. } else if (code === 500) {
  35. ElMessage({ message: msg, type: 'error' })
  36. return Promise.reject(new Error(msg))
  37. } else if (code === 601) {
  38. ElMessage({ message: msg, type: 'warning' })
  39. return Promise.reject(new Error(msg))
  40. } else if (code !== 200) {
  41. ElNotification.error({ title: msg })
  42. return Promise.reject('error')
  43. } else {
  44. return Promise.resolve(res.data)
  45. }
  46. },
  47. (error) => {
  48. console.log('err' + error)
  49. let { message } = error
  50. if (message == 'Network Error') {
  51. message = '后端接口连接异常'
  52. } else if (message.includes('timeout')) {
  53. message = '系统接口请求超时'
  54. } else if (message.includes('Request failed with status code')) {
  55. message = '系统接口' + message.substr(message.length - 3) + '异常'
  56. }
  57. ElMessage({ message: message, type: 'error', duration: 5 * 1000 })
  58. return Promise.reject(error)
  59. }
  60. )
  61. export default service