nstarter-http-request 0.1.11 → 0.1.13
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.
- package/CHANGELOG.md +6 -0
- package/README.md +1 -2
- package/dist/cjs/adapter/axios.adapter.js +97 -2
- package/dist/cjs/adapter/axios.adapter.js.map +1 -1
- package/dist/cjs/adapter/base.js +20 -1
- package/dist/cjs/adapter/base.js.map +1 -1
- package/dist/cjs/adapter/undici.adapter.js +97 -77
- package/dist/cjs/adapter/undici.adapter.js.map +1 -1
- package/dist/cjs/client.js +99 -56
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/config.js +1 -1
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/const/config.const.js +8 -3
- package/dist/cjs/const/config.const.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/types/errors.js +30 -2
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/utils/index.js +2 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/redirect.js +138 -0
- package/dist/cjs/utils/redirect.js.map +1 -0
- package/dist/esm/adapter/axios.adapter.js +99 -4
- package/dist/esm/adapter/axios.adapter.js.map +1 -1
- package/dist/esm/adapter/base.js +20 -1
- package/dist/esm/adapter/base.js.map +1 -1
- package/dist/esm/adapter/undici.adapter.js +98 -78
- package/dist/esm/adapter/undici.adapter.js.map +1 -1
- package/dist/esm/client.js +100 -57
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/config.js +1 -1
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/const/config.const.js +7 -2
- package/dist/esm/const/config.const.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/errors.js +28 -1
- package/dist/esm/types/errors.js.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/redirect.js +133 -0
- package/dist/esm/utils/redirect.js.map +1 -0
- package/dist/types/adapter/axios.adapter.d.ts +22 -0
- package/dist/types/adapter/axios.adapter.d.ts.map +1 -1
- package/dist/types/adapter/base.d.ts +6 -0
- package/dist/types/adapter/base.d.ts.map +1 -1
- package/dist/types/adapter/undici.adapter.d.ts +24 -12
- package/dist/types/adapter/undici.adapter.d.ts.map +1 -1
- package/dist/types/client.d.ts +11 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/const/config.const.d.ts +6 -0
- package/dist/types/const/config.const.d.ts.map +1 -1
- package/dist/types/types/config.d.ts +2 -2
- package/dist/types/types/config.d.ts.map +1 -1
- package/dist/types/types/errors.d.ts +26 -1
- package/dist/types/types/errors.d.ts.map +1 -1
- package/dist/types/types/request_response.d.ts +1 -1
- package/dist/types/types/request_response.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/redirect.d.ts +26 -0
- package/dist/types/utils/redirect.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/adapter/axios.adapter.ts +128 -4
- package/src/adapter/base.ts +22 -1
- package/src/adapter/undici.adapter.ts +112 -91
- package/src/client.ts +114 -63
- package/src/config.ts +1 -1
- package/src/const/config.const.ts +8 -2
- package/src/types/config.ts +2 -3
- package/src/types/errors.ts +39 -1
- package/src/types/request_response.ts +1 -2
- package/src/utils/index.ts +1 -0
- package/src/utils/redirect.ts +163 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Axios 适配器实现
|
|
3
3
|
*/
|
|
4
|
-
import { HttpError } from '../types';
|
|
4
|
+
import { HttpError, ResponseTooLargeError } from '../types';
|
|
5
5
|
import { BaseHttpAdapter } from './base';
|
|
6
6
|
import axios from 'axios';
|
|
7
7
|
import { HttpsProxyAgent } from 'https-proxy-agent';
|
|
8
8
|
import * as https from 'https';
|
|
9
|
-
import { EClientAdapter } from '../const';
|
|
9
|
+
import { MAX_RESPONSE_SIZE_TOLERANCE_RATIO, EClientAdapter } from '../const';
|
|
10
|
+
import { RedirectUtils } from '../utils';
|
|
10
11
|
/**
|
|
11
12
|
* Axios 适配器
|
|
12
13
|
*/
|
|
@@ -30,7 +31,9 @@ export class AxiosAdapter extends BaseHttpAdapter {
|
|
|
30
31
|
throw new Error('Axios is not available. Please install it: npm install axios');
|
|
31
32
|
}
|
|
32
33
|
const url = this.buildUrl(options.url, options.params);
|
|
34
|
+
const timeout = options.timeout ?? this.requestConfig.timeout;
|
|
33
35
|
const axiosConfig = this.buildAxiosConfig(options, url);
|
|
36
|
+
const signalState = this.buildAxiosSignals(axiosConfig, options, timeout);
|
|
34
37
|
try {
|
|
35
38
|
const startTime = Date.now();
|
|
36
39
|
const axiosResponse = await axios(axiosConfig);
|
|
@@ -52,8 +55,64 @@ export class AxiosAdapter extends BaseHttpAdapter {
|
|
|
52
55
|
return response;
|
|
53
56
|
}
|
|
54
57
|
catch (error) {
|
|
55
|
-
throw this.handleAxiosError(error, options);
|
|
58
|
+
throw signalState.abortError() ?? this.handleAxiosError(error, options);
|
|
56
59
|
}
|
|
60
|
+
finally {
|
|
61
|
+
signalState.cleanup();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 创建整次请求超时与响应体超限两个中止信号,合并后写入 axiosConfig(原地修改)。
|
|
66
|
+
* 返回 catch 中还原中止原因的 abortError(非本方法中止时返回 undefined),以及 finally 中清理定时器的 cleanup。
|
|
67
|
+
*/
|
|
68
|
+
buildAxiosSignals(axiosConfig, options, timeout) {
|
|
69
|
+
// maxRedirects 为 0 时 axios 使用原生 http 而不是 follow-redirects。
|
|
70
|
+
// 原生 timeout 是套接字空闲超时,在比如持续上传的场景下会被不断重置,需要使用中止信号来结束请求。
|
|
71
|
+
const deadline = this.createDeadline(timeout);
|
|
72
|
+
const bodySizeGuard = this.createBodySizeGuard(options);
|
|
73
|
+
const signals = [deadline.signal, bodySizeGuard.signal].filter((item) => !!item);
|
|
74
|
+
axiosConfig.signal = signals.length > 1 ? AbortSignal.any(signals) : signals[0];
|
|
75
|
+
axiosConfig.onDownloadProgress = bodySizeGuard.onDownloadProgress;
|
|
76
|
+
return {
|
|
77
|
+
abortError: () => {
|
|
78
|
+
if (deadline.timedOut()) {
|
|
79
|
+
return new HttpError(`timeout of ${timeout}ms exceeded`, 'ECONNABORTED', undefined, undefined, options);
|
|
80
|
+
}
|
|
81
|
+
if (bodySizeGuard.exceeded()) {
|
|
82
|
+
return new ResponseTooLargeError(this.requestConfig.maxResponseBodySize, options);
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
},
|
|
86
|
+
cleanup: deadline.cleanup
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 创建 Content-Length 预检。
|
|
91
|
+
*
|
|
92
|
+
* axios 的 Node http 适配器只按已收到的分块累计 maxContentLength,响应头已声明超限时仍会下载到上限才中断。
|
|
93
|
+
* 这里借助 onDownloadProgress 的 total(响应头 Content-Length),在首个分块到达时就中止请求。
|
|
94
|
+
* - 无 Content-Length(chunked)时不触发,由 axios 的分块累计兜底;
|
|
95
|
+
* - stream 响应不启用,避免额外插入转换流;
|
|
96
|
+
* - total 是线上字节,对几乎不可压缩的 gzip 响应可能略大于解压后的大小,
|
|
97
|
+
* 因此比较时保留 MAX_RESPONSE_SIZE_TOLERANCE_RATIO 的容差。
|
|
98
|
+
*/
|
|
99
|
+
createBodySizeGuard(options) {
|
|
100
|
+
const maxRespBodySize = this.resolveMaxResponseBodySize();
|
|
101
|
+
if (options.responseType === 'stream' || maxRespBodySize === undefined) {
|
|
102
|
+
return { exceeded: () => false };
|
|
103
|
+
}
|
|
104
|
+
const controller = new AbortController();
|
|
105
|
+
let exceeded = false;
|
|
106
|
+
return {
|
|
107
|
+
signal: controller.signal,
|
|
108
|
+
onDownloadProgress: (event) => {
|
|
109
|
+
if (typeof event.total === 'number' && event.total > maxRespBodySize + Math.ceil(maxRespBodySize * MAX_RESPONSE_SIZE_TOLERANCE_RATIO)) {
|
|
110
|
+
exceeded = true;
|
|
111
|
+
controller.abort();
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
exceeded: () => exceeded
|
|
115
|
+
};
|
|
57
116
|
}
|
|
58
117
|
/**
|
|
59
118
|
* 构建 Axios 配置
|
|
@@ -65,14 +124,20 @@ export class AxiosAdapter extends BaseHttpAdapter {
|
|
|
65
124
|
method: options.method.toLowerCase(),
|
|
66
125
|
url,
|
|
67
126
|
headers: options.headers || {},
|
|
68
|
-
timeout: options.timeout ?? this.requestConfig.timeout,
|
|
69
127
|
maxRedirects: this.requestConfig.maxRedirects,
|
|
128
|
+
validateStatus: (status) => {
|
|
129
|
+
return (status >= 200 && status < 300) || status === 304 || RedirectUtils.isRedirectStatus(status);
|
|
130
|
+
},
|
|
70
131
|
maxContentLength: this.requestConfig.maxResponseBodySize,
|
|
71
132
|
maxBodyLength: this.requestConfig.maxRequestBodySize,
|
|
72
133
|
httpsAgent: new https.Agent({
|
|
73
134
|
rejectUnauthorized: this.securityConfig.rejectUnauthorized
|
|
74
135
|
})
|
|
75
136
|
};
|
|
137
|
+
const timeout = options.timeout ?? this.requestConfig.timeout;
|
|
138
|
+
if (timeout !== undefined) {
|
|
139
|
+
axiosConfig.timeout = timeout;
|
|
140
|
+
}
|
|
76
141
|
// 设置请求体
|
|
77
142
|
if (options.body !== undefined) {
|
|
78
143
|
axiosConfig.data = options.body;
|
|
@@ -150,6 +215,11 @@ export class AxiosAdapter extends BaseHttpAdapter {
|
|
|
150
215
|
* @param options 请求选项
|
|
151
216
|
*/
|
|
152
217
|
handleAxiosError(error, options) {
|
|
218
|
+
// axios 没有为 maxContentLength 超限提供专用错误码(与 5xx 共用 ERR_BAD_RESPONSE),
|
|
219
|
+
// 只能靠固定的消息前缀识别,识别后转成不可重试的 ResponseTooLargeError。
|
|
220
|
+
if (error.isAxiosError && error.code === 'ERR_BAD_RESPONSE' && error.message.startsWith('maxContentLength size of')) {
|
|
221
|
+
return new ResponseTooLargeError(this.requestConfig.maxResponseBodySize, options);
|
|
222
|
+
}
|
|
153
223
|
if (error.isAxiosError) {
|
|
154
224
|
return new HttpError(error.message, error.code || 'AXIOS_ERROR', error.response?.status, error.response ? {
|
|
155
225
|
status: error.response.status,
|
|
@@ -179,5 +249,30 @@ export class AxiosAdapter extends BaseHttpAdapter {
|
|
|
179
249
|
}
|
|
180
250
|
return config;
|
|
181
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* 按墙钟时间中止请求,到点后 timedOut 为 true
|
|
254
|
+
* @param timeout 超时时间,单位毫秒
|
|
255
|
+
* @returns 中止信号、是否超时、清理函数
|
|
256
|
+
*/
|
|
257
|
+
createDeadline(timeout) {
|
|
258
|
+
if (typeof timeout !== 'number' || !Number.isFinite(timeout) || timeout <= 0) {
|
|
259
|
+
return {
|
|
260
|
+
timedOut: () => false,
|
|
261
|
+
cleanup: () => undefined
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
const controller = new AbortController();
|
|
265
|
+
let timedOut = false;
|
|
266
|
+
const timer = setTimeout(() => {
|
|
267
|
+
timedOut = true;
|
|
268
|
+
controller.abort();
|
|
269
|
+
}, timeout);
|
|
270
|
+
timer.unref?.();
|
|
271
|
+
return {
|
|
272
|
+
signal: controller.signal,
|
|
273
|
+
timedOut: () => timedOut,
|
|
274
|
+
cleanup: () => clearTimeout(timer)
|
|
275
|
+
};
|
|
276
|
+
}
|
|
182
277
|
}
|
|
183
278
|
//# sourceMappingURL=axios.adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"axios.adapter.js","sourceRoot":"","sources":["../../../src/adapter/axios.adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,
|
|
1
|
+
{"version":3,"file":"axios.adapter.js","sourceRoot":"","sources":["../../../src/adapter/axios.adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/adapter/base.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP 适配器基础实现
|
|
3
3
|
*/
|
|
4
|
+
import { HttpError } from '../types';
|
|
4
5
|
import { CommonUtils } from '../utils';
|
|
5
6
|
/**
|
|
6
7
|
* HTTP 适配器抽象基类
|
|
8
|
+
*
|
|
9
|
+
* g-7114106599:不允许直接跟跳3XX,防止SSRF。调用方需要自行处理 3XX 响应。
|
|
7
10
|
*/
|
|
8
11
|
export class BaseHttpAdapter {
|
|
9
12
|
constructor(requestConfig, securityConfig, logger) {
|
|
10
|
-
this.requestConfig = requestConfig;
|
|
13
|
+
this.requestConfig = { ...requestConfig, maxRedirects: 0 };
|
|
11
14
|
this.securityConfig = securityConfig;
|
|
12
15
|
this.logger = logger;
|
|
13
16
|
}
|
|
@@ -49,6 +52,15 @@ export class BaseHttpAdapter {
|
|
|
49
52
|
url: options.url,
|
|
50
53
|
error: error instanceof Error ? error.message : String(error)
|
|
51
54
|
});
|
|
55
|
+
// 默认所有错误均可重试;仅在 HttpError 的 retriable 为 false 时终止重试
|
|
56
|
+
if (error instanceof HttpError && !error.retriable) {
|
|
57
|
+
this.logger?.debug('HTTP request error is not retriable, skip remaining retries', {
|
|
58
|
+
method: options.method,
|
|
59
|
+
url: options.url,
|
|
60
|
+
attempt: attempt + 1
|
|
61
|
+
});
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
52
64
|
// 最后一次尝试,不再重试
|
|
53
65
|
if (attempt === retries) {
|
|
54
66
|
break;
|
|
@@ -66,6 +78,13 @@ export class BaseHttpAdapter {
|
|
|
66
78
|
});
|
|
67
79
|
throw lastError;
|
|
68
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* @returns 有效的响应体大小上限;不限制时返回 undefined
|
|
83
|
+
*/
|
|
84
|
+
resolveMaxResponseBodySize() {
|
|
85
|
+
const max = this.requestConfig.maxResponseBodySize;
|
|
86
|
+
return typeof max === 'number' && max > 0 ? max : undefined;
|
|
87
|
+
}
|
|
69
88
|
/**
|
|
70
89
|
* 更新请求配置
|
|
71
90
|
* @param config 新的请求配置
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/adapter/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/adapter/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Undici 适配器实现
|
|
3
3
|
*/
|
|
4
|
-
import { HttpError } from '../types';
|
|
4
|
+
import { HttpError, ResponseTooLargeError } from '../types';
|
|
5
5
|
import { BaseHttpAdapter } from './base';
|
|
6
6
|
import undici, { Agent, ProxyAgent } from 'undici';
|
|
7
7
|
import { STATUS_CODES } from 'http';
|
|
8
8
|
import { EClientAdapter } from '../const';
|
|
9
|
+
import { RedirectUtils } from '../utils';
|
|
9
10
|
/**
|
|
10
11
|
* Undici 适配器
|
|
11
12
|
*/
|
|
@@ -32,7 +33,7 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
32
33
|
const headers = this.prepareHeaders(options.headers);
|
|
33
34
|
const body = this.prepareBody(options.body, headers);
|
|
34
35
|
const timeoutState = this.createRequestTimeoutState(options);
|
|
35
|
-
const dispatcher = this.buildDispatcher(options
|
|
36
|
+
const dispatcher = this.buildDispatcher(options);
|
|
36
37
|
const undiciOptions = this.buildUndiciOptions(options, headers, body, dispatcher, timeoutState);
|
|
37
38
|
try {
|
|
38
39
|
const startTime = Date.now();
|
|
@@ -47,7 +48,8 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
47
48
|
if (options.responseType === 'stream') {
|
|
48
49
|
timeoutState.cleanup();
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
+
// 读取过程中会按 maxResponseBodySize 提前拒绝/中断,超限时不会把完整响应体读入内存
|
|
52
|
+
const data = await this.readResponseBody(response, options);
|
|
51
53
|
const httpResponse = {
|
|
52
54
|
status: response.statusCode,
|
|
53
55
|
statusText: this.getStatusText(response.statusCode),
|
|
@@ -55,7 +57,6 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
55
57
|
data,
|
|
56
58
|
config: options
|
|
57
59
|
};
|
|
58
|
-
this.ensureResponseBodySize(httpResponse, options.responseType);
|
|
59
60
|
this.ensureSuccessStatus(httpResponse);
|
|
60
61
|
return httpResponse;
|
|
61
62
|
}
|
|
@@ -67,6 +68,8 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
67
68
|
}
|
|
68
69
|
finally {
|
|
69
70
|
timeoutState.cleanup();
|
|
71
|
+
// buildDispatcher 为每个请求单独创建 Agent/ProxyAgent,用完需要关闭,否则连接池与 keep-alive 连接会一直保留。
|
|
72
|
+
dispatcher?.close().catch(() => undefined);
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
/**
|
|
@@ -116,14 +119,14 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
116
119
|
/**
|
|
117
120
|
* 构建 Dispatcher(代理或 TLS 配置)
|
|
118
121
|
* @param options 请求选项
|
|
119
|
-
* @param timeout 请求总超时时间
|
|
120
122
|
*/
|
|
121
|
-
buildDispatcher(options
|
|
123
|
+
buildDispatcher(options) {
|
|
122
124
|
let dispatcher;
|
|
125
|
+
const timeout = this.resolveUndiciTimeout(options);
|
|
123
126
|
// 如果 rejectUnauthorized 为 false,需要创建 Agent 来设置 TLS 选项
|
|
124
127
|
if (!this.securityConfig.rejectUnauthorized) {
|
|
125
128
|
dispatcher = new Agent({
|
|
126
|
-
|
|
129
|
+
connectTimeout: timeout,
|
|
127
130
|
connect: {
|
|
128
131
|
rejectUnauthorized: false
|
|
129
132
|
}
|
|
@@ -154,7 +157,7 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
154
157
|
}
|
|
155
158
|
const agent = new ProxyAgent({
|
|
156
159
|
uri: proxyUrl,
|
|
157
|
-
|
|
160
|
+
connectTimeout: timeout,
|
|
158
161
|
connect: {
|
|
159
162
|
rejectUnauthorized: this.securityConfig.rejectUnauthorized
|
|
160
163
|
}
|
|
@@ -175,7 +178,7 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
175
178
|
createForwardProxyAgent(proxyUrl, timeout) {
|
|
176
179
|
const agent = new ProxyAgent({
|
|
177
180
|
uri: proxyUrl,
|
|
178
|
-
|
|
181
|
+
connectTimeout: timeout,
|
|
179
182
|
connect: {
|
|
180
183
|
rejectUnauthorized: this.securityConfig.rejectUnauthorized
|
|
181
184
|
}
|
|
@@ -190,7 +193,7 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
190
193
|
* 构建 Undici 请求选项
|
|
191
194
|
*/
|
|
192
195
|
buildUndiciOptions(options, headers, body, dispatcher, timeoutState) {
|
|
193
|
-
const timeout = this.
|
|
196
|
+
const timeout = this.resolveUndiciTimeout(options);
|
|
194
197
|
return {
|
|
195
198
|
method: options.method,
|
|
196
199
|
headers,
|
|
@@ -210,6 +213,7 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
210
213
|
const timeout = this.resolveTimeout(options);
|
|
211
214
|
if (!this.isPositiveTimeout(timeout)) {
|
|
212
215
|
return {
|
|
216
|
+
timeout,
|
|
213
217
|
timedOut: false,
|
|
214
218
|
cleanup: () => { }
|
|
215
219
|
};
|
|
@@ -236,6 +240,13 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
236
240
|
resolveTimeout(options) {
|
|
237
241
|
return options.timeout ?? this.requestConfig.timeout;
|
|
238
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* 获取传给 undici 的阶段超时时间。0 用于内部禁用 undici 默认阶段超时。
|
|
245
|
+
*/
|
|
246
|
+
resolveUndiciTimeout(options) {
|
|
247
|
+
const timeout = this.resolveTimeout(options);
|
|
248
|
+
return this.isPositiveTimeout(timeout) ? timeout : 0;
|
|
249
|
+
}
|
|
239
250
|
/**
|
|
240
251
|
* 判断超时时间是否启用。
|
|
241
252
|
*/
|
|
@@ -258,117 +269,126 @@ export class UndiciAdapter extends BaseHttpAdapter {
|
|
|
258
269
|
return new HttpError(errorMessage, errorCode, undefined, undefined, options);
|
|
259
270
|
}
|
|
260
271
|
/**
|
|
261
|
-
*
|
|
272
|
+
* 2xx 和 304 作为成功结果返回。undici 未跟跳的 3xx 交回调用方。
|
|
262
273
|
*/
|
|
263
274
|
ensureSuccessStatus(response) {
|
|
264
|
-
if (response.status >= 200 && response.status < 300)
|
|
275
|
+
if ((response.status >= 200 && response.status < 300)
|
|
276
|
+
|| response.status === 304
|
|
277
|
+
|| RedirectUtils.isRedirectStatus(response.status)) {
|
|
265
278
|
return;
|
|
266
279
|
}
|
|
267
280
|
throw new HttpError(`Request failed with status code ${response.status}`, response.status >= 500 ? 'ERR_BAD_RESPONSE' : 'ERR_BAD_REQUEST', response.status, response, response.config);
|
|
268
281
|
}
|
|
269
282
|
/**
|
|
270
|
-
*
|
|
283
|
+
* 解析 Content-Length 响应头。仅接受合法的非负整数,重复头/非法值视为未知。
|
|
271
284
|
*/
|
|
272
|
-
|
|
273
|
-
if (
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
const maxResponseBodySize = this.requestConfig.maxResponseBodySize;
|
|
277
|
-
if (typeof maxResponseBodySize !== 'number' ||
|
|
278
|
-
!Number.isFinite(maxResponseBodySize) ||
|
|
279
|
-
maxResponseBodySize <= 0) {
|
|
280
|
-
// NsHttpClient 会先做配置合并和校验;这里防御直接实例化 Adapter 的异常配置。
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
const bodySize = this.getBodySize(response.data);
|
|
284
|
-
if (bodySize <= maxResponseBodySize) {
|
|
285
|
-
return;
|
|
285
|
+
parseContentLength(value) {
|
|
286
|
+
if (typeof value !== 'string' || !/^\d+$/.test(value.trim())) {
|
|
287
|
+
return undefined;
|
|
286
288
|
}
|
|
287
|
-
|
|
289
|
+
const length = Number(value.trim());
|
|
290
|
+
return Number.isSafeInteger(length) ? length : undefined;
|
|
288
291
|
}
|
|
289
292
|
/**
|
|
290
|
-
*
|
|
293
|
+
* 丢弃未读完的响应体并终止下载。
|
|
294
|
+
* undici 的 BodyReadable.destroy() 不带错误时会以 RequestAbortedError 触发 error 事件,
|
|
295
|
+
* 没有监听器会变成未捕获异常,因此先挂空监听器。
|
|
291
296
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
297
|
+
discardBody(response) {
|
|
298
|
+
response.body.on('error', () => undefined);
|
|
299
|
+
response.body.destroy();
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* 带大小上限地读取非流式响应体。
|
|
303
|
+
*
|
|
304
|
+
* 1. Content-Length 预检:响应头已声明超限时,不读取响应体,直接销毁并拒绝。
|
|
305
|
+
* 2. 逐分块累计字节数,累计值超过上限(等于上限放行)立即销毁响应流并拒绝,后续数据不再下载;
|
|
306
|
+
* 该行为对齐 axios(Node http 适配器)的 maxContentLength。
|
|
307
|
+
*/
|
|
308
|
+
async readBodyWithLimit(response, options) {
|
|
309
|
+
const maxRespBodySize = this.resolveMaxResponseBodySize();
|
|
310
|
+
// HEAD / 204 / 304 没有响应体,其 Content-Length 描述的是对应实体而不是本次响应体:
|
|
311
|
+
// 不能用于预检;服务端携带时 undici 还会一直等待并不存在的响应体,因此不进入读取,直接丢弃。
|
|
312
|
+
if (options.method === 'HEAD' || response.statusCode === 204 || response.statusCode === 304) {
|
|
313
|
+
this.discardBody(response);
|
|
314
|
+
return Buffer.alloc(0);
|
|
304
315
|
}
|
|
305
|
-
if (
|
|
306
|
-
|
|
316
|
+
if (maxRespBodySize !== undefined) {
|
|
317
|
+
const contentLength = this.parseContentLength(response.headers['content-length']);
|
|
318
|
+
if (contentLength !== undefined && contentLength > maxRespBodySize) {
|
|
319
|
+
this.discardBody(response);
|
|
320
|
+
throw new ResponseTooLargeError(maxRespBodySize, options, response.statusCode);
|
|
321
|
+
}
|
|
307
322
|
}
|
|
308
|
-
|
|
309
|
-
|
|
323
|
+
const chunks = [];
|
|
324
|
+
let total = 0;
|
|
325
|
+
for await (const chunk of response.body) {
|
|
326
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
327
|
+
total += buffer.byteLength;
|
|
328
|
+
if (maxRespBodySize !== undefined && total > maxRespBodySize) {
|
|
329
|
+
this.discardBody(response);
|
|
330
|
+
throw new ResponseTooLargeError(maxRespBodySize, options, response.statusCode);
|
|
331
|
+
}
|
|
332
|
+
chunks.push(buffer);
|
|
310
333
|
}
|
|
311
|
-
return Buffer.
|
|
334
|
+
return Buffer.concat(chunks, total);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* 基于已读取(已受大小限制)的字节构造 Response,复用运行时的 blob/formData 解析逻辑。
|
|
338
|
+
*/
|
|
339
|
+
toFetchResponse(buffer, response) {
|
|
340
|
+
const contentType = response.headers['content-type'];
|
|
341
|
+
return new Response(buffer, {
|
|
342
|
+
headers: typeof contentType === 'string' ? { 'content-type': contentType } : undefined
|
|
343
|
+
});
|
|
312
344
|
}
|
|
313
345
|
/**
|
|
314
346
|
* 读取响应体
|
|
315
347
|
* @param response Undici 响应对象
|
|
316
|
-
* @param
|
|
348
|
+
* @param options 请求选项
|
|
317
349
|
*/
|
|
318
|
-
async readResponseBody(response,
|
|
350
|
+
async readResponseBody(response, options) {
|
|
351
|
+
if (options.responseType === 'stream') {
|
|
352
|
+
// undici 返回 BodyReadable (继承自 Node.js Readable),流式响应由调用方自行消费,不受 maxResponseBodySize 限制
|
|
353
|
+
return response.body;
|
|
354
|
+
}
|
|
319
355
|
try {
|
|
320
|
-
|
|
356
|
+
const buffer = await this.readBodyWithLimit(response, options);
|
|
357
|
+
const decoder = new TextDecoder();
|
|
358
|
+
switch (options.responseType) {
|
|
321
359
|
case 'text': {
|
|
322
|
-
return
|
|
360
|
+
return decoder.decode(buffer);
|
|
323
361
|
}
|
|
324
362
|
case 'arraybuffer': {
|
|
325
|
-
return
|
|
326
|
-
}
|
|
327
|
-
case 'stream': {
|
|
328
|
-
// undici 返回 BodyReadable (继承自 Node.js Readable)
|
|
329
|
-
return response.body;
|
|
363
|
+
return buffer;
|
|
330
364
|
}
|
|
331
365
|
case 'blob': {
|
|
332
|
-
return (await response.
|
|
366
|
+
return (await this.toFetchResponse(buffer, response).blob());
|
|
333
367
|
}
|
|
334
368
|
case 'formdata': {
|
|
335
|
-
return (await response.
|
|
336
|
-
}
|
|
337
|
-
case 'json': {
|
|
338
|
-
return await this.readJsonResponseBody(response);
|
|
369
|
+
return (await this.toFetchResponse(buffer, response).formData());
|
|
339
370
|
}
|
|
371
|
+
case 'json':
|
|
340
372
|
default: {
|
|
341
|
-
|
|
373
|
+
// 按 axios 的默认兼容行为:空响应体或非 JSON 文本不应让成功状态码请求因为解析失败变成异常
|
|
374
|
+
const text = decoder.decode(buffer);
|
|
342
375
|
try {
|
|
343
376
|
return JSON.parse(text);
|
|
344
377
|
}
|
|
345
378
|
catch {
|
|
346
|
-
// 如果不是有效的 JSON,返回原文本
|
|
347
379
|
return text;
|
|
348
380
|
}
|
|
349
381
|
}
|
|
350
382
|
}
|
|
351
383
|
}
|
|
352
384
|
catch (error) {
|
|
385
|
+
// 响应体超限错误需要原样抛出,保留错误码、文案与不可重试标记
|
|
386
|
+
if (error instanceof ResponseTooLargeError) {
|
|
387
|
+
throw error;
|
|
388
|
+
}
|
|
353
389
|
throw new Error(`Failed to read response body: ${error instanceof Error ? error.message : String(error)}`);
|
|
354
390
|
}
|
|
355
391
|
}
|
|
356
|
-
/**
|
|
357
|
-
* 按 axios 的默认兼容行为读取 JSON 响应。
|
|
358
|
-
* 空响应体或非 JSON 文本不应让成功状态码请求因为解析失败变成异常。
|
|
359
|
-
*/
|
|
360
|
-
async readJsonResponseBody(response) {
|
|
361
|
-
const text = await response.body.text();
|
|
362
|
-
if (!text) {
|
|
363
|
-
return text;
|
|
364
|
-
}
|
|
365
|
-
try {
|
|
366
|
-
return JSON.parse(text);
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
return text;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
392
|
/**
|
|
373
393
|
* 获取状态文本
|
|
374
394
|
* @param statusCode 状态码
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undici.adapter.js","sourceRoot":"","sources":["../../../src/adapter/undici.adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"undici.adapter.js","sourceRoot":"","sources":["../../../src/adapter/undici.adapter.ts"],"names":[],"mappings":"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"}
|