70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
import {
|
||
runRequestInterceptors,
|
||
runResponseInterceptors,
|
||
globalConfig
|
||
} from './interceptor.js';
|
||
// import * as uni from "@/api/request"; // 原错误导入保留供参考
|
||
|
||
// 基础请求方法
|
||
export function request(options) {
|
||
return new Promise(async (resolve, reject) => {
|
||
try {
|
||
// 合并全局配置
|
||
const mergedConfig = {
|
||
...globalConfig,
|
||
...options,
|
||
header: { ...globalConfig.header, ...(options.header || {}) }
|
||
};
|
||
|
||
// 执行请求拦截器
|
||
let finalConfig;
|
||
try {
|
||
finalConfig = await runRequestInterceptors(mergedConfig);
|
||
} catch (err) {
|
||
return reject(err);
|
||
}
|
||
|
||
if (!finalConfig.url) {
|
||
return reject(new Error('URL is required'));
|
||
}
|
||
|
||
// 发起请求(修复点:移除多余的await)
|
||
uni.request({
|
||
...finalConfig,
|
||
url: finalConfig.baseURL + finalConfig.url,
|
||
success: async (res) => {
|
||
try {
|
||
const handledRes = await runResponseInterceptors(res);
|
||
// console.log(handledRes, 'ssssssssssssssss'); // 保留调试日志
|
||
resolve(handledRes);
|
||
} catch (err) {
|
||
reject(err);
|
||
}
|
||
},
|
||
fail: (err) => reject(err)
|
||
});
|
||
} catch (error) {
|
||
reject(error);
|
||
}
|
||
});
|
||
}
|
||
|
||
// 封装GET方法(保持async/await结构)
|
||
export async function get(url, params = {}, options = {}) {
|
||
return await request({
|
||
url,
|
||
method: 'GET',
|
||
data: params,
|
||
...options
|
||
});
|
||
}
|
||
|
||
// 封装POST方法(保持async/await结构)
|
||
export async function post(url, data = {}, options = {}) {
|
||
return await request({
|
||
url,
|
||
method: 'POST',
|
||
data,
|
||
...options
|
||
});
|
||
} |