89 lines
2.1 KiB
JavaScript
89 lines
2.1 KiB
JavaScript
/**
|
||
* 统一的 HTTP 客户端
|
||
* 自动根据环境切换使用 gatewayHttpClient 或 HttpClient
|
||
*/
|
||
|
||
import { gatewayHttpClient, HttpClient } from '@jdmini/api'
|
||
const { IS_DEV, API_BASE } = require('./config.js')
|
||
|
||
// 开发环境使用 HttpClient
|
||
const devHttpClient = IS_DEV ? new HttpClient({
|
||
baseURL: API_BASE,
|
||
timeout: 30000,
|
||
}) : null
|
||
|
||
/**
|
||
* 统一的 HTTP 请求方法
|
||
* @param {String} url - 请求路径(相对路径,不包含 baseURL)
|
||
* @param {String} method - 请求方法 GET/POST/PUT/DELETE
|
||
* @param {Object} data - 请求数据
|
||
* @param {Object} options - 额外选项
|
||
* @returns {Promise}
|
||
*/
|
||
function request(url, method = 'GET', data = {}, options = {}) {
|
||
// 确保 URL 以 / 开头
|
||
const apiUrl = url.startsWith('/') ? url : `/${url}`
|
||
|
||
if (IS_DEV) {
|
||
// 开发环境:使用 HttpClient
|
||
console.log(`[DEV] ${method} ${API_BASE}${apiUrl}`, data)
|
||
return devHttpClient.request(apiUrl, method, data, options)
|
||
} else {
|
||
// 生产环境:使用 gatewayHttpClient
|
||
// gatewayHttpClient 需要完整的路径:mp/jd-haiba/user/login
|
||
const fullUrl = `${API_BASE}${apiUrl}`
|
||
console.log(`[PROD] ${method} ${fullUrl}`, data)
|
||
|
||
// gatewayHttpClient.request 的参数顺序:(url, method, data, options)
|
||
return gatewayHttpClient.request(fullUrl, method, data, options)
|
||
}
|
||
}
|
||
|
||
/**
|
||
* GET 请求
|
||
*/
|
||
function get(url, params = {}, options = {}) {
|
||
return request(url, 'GET', params, options)
|
||
}
|
||
|
||
/**
|
||
* POST 请求
|
||
*/
|
||
function post(url, data = {}, options = {}) {
|
||
return request(url, 'POST', data, options)
|
||
}
|
||
|
||
/**
|
||
* PUT 请求
|
||
*/
|
||
function put(url, data = {}, options = {}) {
|
||
return request(url, 'PUT', data, options)
|
||
}
|
||
|
||
/**
|
||
* DELETE 请求
|
||
*/
|
||
function del(url, data = {}, options = {}) {
|
||
return request(url, 'DELETE', data, options)
|
||
}
|
||
|
||
/**
|
||
* 上传文件(暂时保留原有逻辑)
|
||
*/
|
||
function upload(filePath, formData = {}) {
|
||
return gatewayHttpClient.uploadFile(filePath,formData)
|
||
}
|
||
|
||
module.exports = {
|
||
request,
|
||
get,
|
||
post,
|
||
put,
|
||
del,
|
||
upload,
|
||
|
||
// 导出原始客户端供特殊场景使用
|
||
gatewayHttpClient,
|
||
devHttpClient
|
||
}
|