anl 26.514.1 → 26.601.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { AxiosInstance } from 'axios'; // 默认 axios 可以替换成 fetch
1
+ import type { AxiosError, AxiosInstance } from 'axios'; // 默认 axios 可以替换成 fetch
2
2
 
3
3
  import axios from 'axios'; // 默认 axios 可以替换成 fetch
4
4
 
@@ -16,38 +16,8 @@ export const dio: AxiosInstance = axios.create({
16
16
  headers: {
17
17
  'Content-Type': 'application/json',
18
18
  },
19
- // 配置请求超时时间
20
- timeout: 30000,
21
- // http 状态码判断
22
- validateStatus(status: number) {
23
- switch (status) {
24
- case 200:
25
- return true;
26
- case 400:
27
- message.error({ type: 'error', content: '请求无效或格式错误!' });
28
- break;
29
- case 401:
30
- message.error({ type: 'error', content: '登录过期,请重新登陆!' });
31
- break;
32
- case 403:
33
- message.error({ type: 'error', content: '服务器拒绝请求!' });
34
- break;
35
- case 404:
36
- message.error({ type: 'error', content: '资源未找到' });
37
- break;
38
- case 500:
39
- message.error({ type: 'error', content: '服务器内部错误' });
40
- break;
41
- case 502:
42
- message.error({ type: 'error', content: '网关或代理服务器收到无效响应' });
43
- break;
44
- case 503:
45
- message.error({ type: 'error', content: '服务器暂时无法处理请求' });
46
- break;
47
- }
48
-
49
- return true;
50
- },
19
+ // 1 分钟等于 60000 毫秒,超时设置为10分钟
20
+ timeout: 600000,
51
21
  });
52
22
 
53
23
  /**
@@ -70,14 +40,64 @@ dio.interceptors.request.use(
70
40
  * @param response 响应数据
71
41
  * @returns 响应数据
72
42
  */
43
+ // 响应拦截 —— 成功(2xx)
73
44
  dio.interceptors.response.use(
74
- (response) => {
75
- // 对响应数据做处理,例如只返回data部分
76
- if (response.data.code === 4001) {
77
- // 退出登录逻辑 自己写
78
- // window.location.href = + 'login';
45
+ (response) => response,
46
+ (error: AxiosError<{ message?: string; data?: unknown }>) => {
47
+ // 网络错误或请求取消等,无 response
48
+ if (!error.response) {
49
+ message.error('网络异常,请检查网络连接');
50
+ return Promise.reject(error);
79
51
  }
80
- return response;
52
+
53
+ const { status, data } = error.response;
54
+
55
+ switch (status) {
56
+ case 400: {
57
+ const respData = data ?? {};
58
+ const payload = (respData as { data?: unknown }).data;
59
+ let errorMsg = (respData as { message?: string }).message ?? '请求参数错误';
60
+
61
+ if (typeof payload === 'string') {
62
+ errorMsg = payload;
63
+ } else if (payload && typeof payload === 'object' && 'errors' in payload) {
64
+ const errors = (payload as { errors?: { message?: string }[] }).errors;
65
+ if (Array.isArray(errors)) {
66
+ const collected = errors.map((item) => item?.message).filter((msg): msg is string => Boolean(msg));
67
+ if (collected.length) {
68
+ errorMsg = collected.join(';');
69
+ }
70
+ }
71
+ }
72
+
73
+ message.error(errorMsg);
74
+ break;
75
+ }
76
+ case 401:
77
+ message.error('登录过期,请重新登录');
78
+ if (window.location.pathname !== '/login') {
79
+ window.location.href = '/login';
80
+ }
81
+ break;
82
+ case 403:
83
+ message.error('服务器拒绝请求');
84
+ break;
85
+ case 404:
86
+ message.error('资源未找到');
87
+ break;
88
+ case 500:
89
+ message.error('服务器内部错误');
90
+ break;
91
+ case 502:
92
+ message.error('网关或代理服务器收到无效响应');
93
+ break;
94
+ case 503:
95
+ message.error('服务器暂时无法处理请求');
96
+ break;
97
+ default:
98
+ message.error(data?.message ?? '请求失败,请稍后重试');
99
+ }
100
+
101
+ return Promise.reject(error);
81
102
  },
82
- (error) => Promise.reject(error),
83
103
  );
package/lib/package.cjs CHANGED
@@ -1 +1 @@
1
- var e=`26.514.1`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
1
+ var e=`26.601.0`;Object.defineProperty(exports,`version`,{enumerable:!0,get:function(){return e}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anl",
3
- "version": "26.514.1",
3
+ "version": "26.601.0",
4
4
  "description": "FE command line tool",
5
5
  "main": "bin/an-cli.js",
6
6
  "exports": {