import config from '../config.js' const request = (options) => { return new Promise((resolve, reject) => { const fullUrl = config.baseUrl + options.url console.log('=== 请求开始 ===') console.log('URL:', fullUrl) console.log('Method:', options.method || 'GET') console.log('Data:', options.data) uni.request({ url: fullUrl, method: options.method || 'GET', data: options.data || {}, header: { 'Content-Type': 'application/json', ...options.header }, timeout: config.timeout, success: (res) => { console.log('=== 请求成功 ===') console.log('StatusCode:', res.statusCode) console.log('Response:', res.data) const { statusCode, data } = res if (statusCode === 200) { if (data.code === 0 || data.success === true) { resolve(data) } else { console.error('=== 业务错误 ===') console.error('Code:', data.code) console.error('Message:', data.message) uni.showModal({ title: '请求失败', content: data.message || '服务器返回错误', showCancel: false }) reject(data) } } else { console.error('=== HTTP错误 ===') console.error('StatusCode:', statusCode) console.error('Response:', data) uni.showModal({ title: '网络错误', content: `状态码: ${statusCode}`, showCancel: false }) reject(res) } }, fail: (err) => { console.error('=== 请求失败 ===') console.error('Error:', err) console.error('Error Message:', err.errMsg) let errorMsg = '网络连接失败' if (err.errMsg) { if (err.errMsg.includes('timeout')) { errorMsg = '请求超时,请检查网络' } else if (err.errMsg.includes('fail')) { errorMsg = '网络连接失败,请检查网络设置' } else if (err.errMsg.includes('request:fail')) { errorMsg = `连接失败: ${err.errMsg}` } } uni.showModal({ title: '错误', content: errorMsg, showCancel: false }) reject(err) } }) }) } const api = { wxLogin(code) { return request({ url: config.api.login, method: 'POST', data: { wxMiniCode: code } }) }, getQuestion(categorySn) { return request({ url: config.api.getQuestion, method: 'POST', data: categorySn ? { category_sn: categorySn } : {} }) }, answerQuestion(sn, answer) { return request({ url: config.api.answerQuestion, method: 'POST', data: { sn, answer } }) }, getAllCategory() { return request({ url: config.api.getAllCategory, method: 'POST' }) }, get(url, data = {}) { return request({ url, method: 'GET', data }) }, post(url, data = {}) { return request({ url, method: 'POST', data }) }, put(url, data = {}) { return request({ url, method: 'PUT', data }) }, delete(url, data = {}) { return request({ url, method: 'DELETE', data }) } } export default api