From 3bbf8c95313a8438ecd4027822aba19fb387559c Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Thu, 30 Jul 2026 10:40:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(http):=20=E6=B7=BB=E5=8A=A0HTTP=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E5=85=A8=E9=93=BE=E8=B7=AF=E6=97=A5=E5=BF=97=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增请求ID、耗时统计,打印请求参数、响应结果与失败信息,同时添加重试相关日志,完善各个接口的调用日志输出 --- common/js/http.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/common/js/http.js b/common/js/http.js index 0ad0506..84f37f3 100644 --- a/common/js/http.js +++ b/common/js/http.js @@ -44,6 +44,15 @@ function _sleep(ms) { } function _makeRequest(url, method, data, header, dataType, responseType, timeout) { + const reqId = 'req_' + Date.now() + '_' + Math.floor(Math.random() * 10000); + const reqStart = Date.now(); + console.log('[HTTP][REQUEST]', reqId, method, url, JSON.stringify({ + data: data, + header: header, + dataType: dataType, + responseType: responseType, + timeout: timeout + })); return new Promise((resolve, reject) => { uni.request({ url: url, @@ -54,6 +63,7 @@ function _makeRequest(url, method, data, header, dataType, responseType, timeout responseType: responseType, timeout: timeout, success: (res) => { + console.log('[HTTP][RESPONSE]', reqId, method, url, 'statusCode=', res.statusCode, 'cost=', (Date.now() - reqStart) + 'ms', JSON.stringify(res.data)); if (res.statusCode && [200, 500].indexOf(res.statusCode) == -1) { reject({ errMsg: `request:fail statusCode=${res.statusCode}`, statusCode: res.statusCode }); return; @@ -73,6 +83,7 @@ function _makeRequest(url, method, data, header, dataType, responseType, timeout resolve(res.data); }, fail: (res) => { + console.error('[HTTP][FAIL]', reqId, method, url, 'cost=', (Date.now() - reqStart) + 'ms', JSON.stringify(res)); reject(res); } }); @@ -87,15 +98,20 @@ async function _requestWithRetry(params, url, method, data, header, dataType, re for (let attempt = 0; attempt <= maxRetries; attempt++) { try { + if (attempt > 0) { + console.log('[HTTP][RETRY]', method, url, 'attempt=', attempt, 'maxRetries=', maxRetries); + } const result = await _makeRequest(url, method, data, header, dataType, responseType, timeout); return result; } catch (err) { lastError = err; lastStatusCode = err && err.statusCode; + console.warn('[HTTP][RETRY-FAIL]', method, url, 'attempt=', attempt, 'errMsg=', err && err.errMsg, 'statusCode=', lastStatusCode); if (attempt >= maxRetries || !_shouldRetry(err.errMsg)) { break; } const delay = RETRY_DELAY_BASE * Math.pow(2, attempt); + console.log('[HTTP][RETRY-WAIT]', method, url, 'delay=', delay + 'ms'); await _sleep(delay); } } @@ -207,6 +223,7 @@ export default { } }, uploadBase64(params) { + console.log('[HTTP][REQUEST] uploadBase64', Config.baseUrl + '/api/upload/headimgBase64'); uni.request({ url: Config.baseUrl + '/api/upload/headimgBase64', method: 'POST', @@ -221,14 +238,17 @@ export default { dataType: 'json', responseType: 'text', success: res => { + console.log('[HTTP][RESPONSE] uploadBase64', 'statusCode=', res.statusCode, JSON.stringify(res.data)); typeof params.success == 'function' && params.success(res.data); }, fail: () => { + console.error('[HTTP][FAIL] uploadBase64', JSON.stringify(res)); typeof params.fail == 'function' && params.fail(res); } }); }, pullImage(params) { + console.log('[HTTP][REQUEST] pullImage', Config.baseUrl + '/api/upload/headimgPull', 'path=', params.path); uni.request({ url: Config.baseUrl + '/api/upload/headimgPull', method: 'POST', @@ -243,14 +263,17 @@ export default { dataType: 'json', responseType: 'text', success: res => { + console.log('[HTTP][RESPONSE] pullImage', 'statusCode=', res.statusCode, JSON.stringify(res.data)); typeof params.success == 'function' && params.success(res.data); }, fail: () => { + console.error('[HTTP][FAIL] pullImage', JSON.stringify(res)); typeof params.fail == 'function' && params.fail(res); } }); }, upload(params) { + console.log('[HTTP][REQUEST] upload', Config.baseUrl + params.url, 'name=', params.name || 'file'); uni.uploadFile({ url: Config.baseUrl + params.url, filePath: params.filePath, @@ -264,9 +287,11 @@ export default { 'content-type': 'application/x-www-form-urlencoded;application/json' }, success: (res) => { + console.log('[HTTP][RESPONSE] upload', Config.baseUrl + params.url, 'statusCode=', res.statusCode, res.data); typeof params.success == 'function' && params.success(JSON.parse(res.data)); }, fail: (res) => { + console.error('[HTTP][FAIL] upload', Config.baseUrl + params.url, JSON.stringify(res)); typeof params.fail == 'function' && params.fail(res); } });