request.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //对于axios进行二次封装
  2. //目的1: 利用axios请求,拦截功能
  3. //目的2:请求拦截器,一般可以在公共的部分携带token
  4. import axios from "axios";
  5. import { ElMessage } from "element-plus";
  6. //利用axios。crate方法创建一个axios实例
  7. const request = axios.create({
  8. baseURL: '/api', //请求的基本路径的设置
  9. timeout: 5000 //超时时间的设置,超出五秒请求就是失败的
  10. })
  11. //请求拦截器
  12. request.interceptors.request.use((config) => {
  13. return config
  14. })
  15. //响应拦截器
  16. request.interceptors.response.use((response) => {
  17. //处理http错误
  18. return response.data
  19. }, (error) => {
  20. //处理http网络错误
  21. let status = error.response.status
  22. switch (status) {
  23. case 404:
  24. //错误提示信息
  25. ElMessage({
  26. type: 'error',
  27. message: '请求路径出现问题'
  28. })
  29. break;
  30. case 500 | 501 | 502 | 503 | 504 | 505:
  31. ElMessage({
  32. type: 'error',
  33. message: "服务器挂了"
  34. })
  35. break;
  36. case 401:
  37. ElMessage({
  38. type: 'error',
  39. message: '参数错误'
  40. })
  41. break;
  42. }
  43. return Promise.reject(new Error(error.message))
  44. })
  45. //对外暴露
  46. export default request;