You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

requestConfig.ts 1.8 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * @Author: 赵伟
  3. * @Date: 2024-03-25 13:52:54
  4. * @Description: 网络请求配置,详情请参考 https://umijs.org/docs/max/request
  5. */
  6. import type { RequestConfig } from '@umijs/max';
  7. import { message } from 'antd';
  8. import { clearSessionToken, getAccessToken } from './access';
  9. import { setRemoteMenu } from './services/session';
  10. import { gotoLoginPage } from './utils/ui';
  11. /**
  12. * Umi Max 网络请求配置
  13. * @doc https://umijs.org/docs/max/request#配置
  14. */
  15. export const requestConfig: RequestConfig = {
  16. errorConfig: {},
  17. requestInterceptors: [
  18. (url: any, options: { headers: any }) => {
  19. const headers = options.headers ? options.headers : [];
  20. const authHeader = headers['Authorization'];
  21. const isToken = headers['isToken'];
  22. if (!authHeader && isToken !== false) {
  23. const accessToken = getAccessToken();
  24. if (accessToken) {
  25. headers['Authorization'] = `Bearer ${accessToken}`;
  26. }
  27. }
  28. return { url, options };
  29. },
  30. ],
  31. responseInterceptors: [
  32. (response: any) => {
  33. const { status, data } = response || {};
  34. console.log('response2', response);
  35. if (status >= 200 && status < 300) {
  36. if (data && (data instanceof Blob || data.code === 200)) {
  37. return response;
  38. } else if (data && data.code === 401) {
  39. clearSessionToken();
  40. setRemoteMenu(null);
  41. gotoLoginPage(false);
  42. message.error('请重新登录');
  43. return Promise.reject(response);
  44. } else {
  45. message.error(data?.msg ?? '请求失败');
  46. return Promise.reject(response);
  47. }
  48. } else {
  49. message.error('请求失败');
  50. return Promise.reject(response);
  51. }
  52. },
  53. ],
  54. };