69 lines
1.6 KiB
JavaScript
69 lines
1.6 KiB
JavaScript
// 导入项目配置 - 使用相对路径替代@符号
|
|
import config from '../../../../config.js'
|
|
|
|
// 使用uni-app内置的网络请求API替代axios
|
|
const service = {
|
|
// 基础配置
|
|
baseURL: config.baseUrl,
|
|
timeout: 40000,
|
|
|
|
// request方法封装
|
|
request(options = {}) {
|
|
// 合并默认配置和传入配置
|
|
const requestOptions = {
|
|
url: options.url,
|
|
method: options.method || 'GET',
|
|
header: {
|
|
'X-Requested-With': 'XMLHttpRequest',
|
|
'Content-Type': 'application/json; charset=UTF-8',
|
|
...options.header
|
|
},
|
|
data: options.data,
|
|
timeout: options.timeout || this.timeout
|
|
}
|
|
|
|
// 处理baseURL
|
|
if (requestOptions.url && !requestOptions.url.startsWith('http')) {
|
|
requestOptions.url = this.baseURL + requestOptions.url
|
|
}
|
|
|
|
// 返回Promise
|
|
return new Promise((resolve, reject) => {
|
|
uni.request({
|
|
...requestOptions,
|
|
success: (res) => {
|
|
// 模拟axios的响应拦截器
|
|
const responseData = res.data || {};
|
|
resolve(responseData);
|
|
},
|
|
fail: (error) => {
|
|
console.error('Request failed:', error);
|
|
reject(error);
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
// GET快捷方法
|
|
get(url, params = {}, options = {}) {
|
|
return this.request({
|
|
...options,
|
|
url,
|
|
method: 'GET',
|
|
data: params
|
|
})
|
|
},
|
|
|
|
// POST快捷方法
|
|
post(url, data = {}, options = {}) {
|
|
return this.request({
|
|
...options,
|
|
url,
|
|
method: 'POST',
|
|
data
|
|
})
|
|
}
|
|
}
|
|
|
|
export default service
|