api.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import axios, { AxiosResponse } from 'axios';
  2. // 创建axios实例
  3. const axiosInstance = axios.create({
  4. baseURL: '/bigmodel-api',
  5. timeout: 300000,// 请求超时5分钟
  6. });
  7. // 请求拦截器
  8. axiosInstance.interceptors.request.use(
  9. (config) => {
  10. const userInfoStr = localStorage.getItem('userInfo');
  11. if (userInfoStr) {
  12. const userInfo = JSON.parse(userInfoStr);
  13. if (userInfo.token) {
  14. config.headers['Authorization'] = userInfo.token;
  15. }
  16. }
  17. return config;
  18. }
  19. );
  20. // 响应拦截器
  21. axiosInstance.interceptors.response.use(
  22. (response: AxiosResponse) => {// 成功信息
  23. const { config, data } = response;
  24. if (config.responseType === 'blob') {
  25. return Promise.resolve(data);
  26. } else {
  27. if (data.code === 200) {// 成功
  28. return Promise.resolve(data);
  29. } else {// 失败
  30. if (data.code === 401) {
  31. localStorage.removeItem('userInfo');
  32. const originUrl = window.location.origin;
  33. window.open(originUrl, '_self');
  34. }
  35. return Promise.reject(data);
  36. }
  37. }
  38. },
  39. (error) => {// 错误信息
  40. return Promise.reject();
  41. }
  42. );
  43. export default axiosInstance;