151 lines
2.9 KiB
JavaScript
151 lines
2.9 KiB
JavaScript
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
|