67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
import { BASE_URL } from '@/config'
|
|
import { storage, SESSION_KEY } from '@/utils/storage'
|
|
|
|
export const request = {
|
|
async request(options) {
|
|
const sessionKey = storage.get(SESSION_KEY)
|
|
|
|
return new Promise((resolve, reject) => {
|
|
uni.request({
|
|
url: BASE_URL + options.url,
|
|
method: options.method || 'GET',
|
|
data: options.data,
|
|
header: {
|
|
'Content-Type': 'application/json',
|
|
'Authorization': sessionKey ? `Bearer ${sessionKey}` : ''
|
|
},
|
|
success: async (res) => {
|
|
if (res.statusCode === 401) {
|
|
const { login } = await import('./auth')
|
|
try {
|
|
await login()
|
|
resolve(this.request(options))
|
|
} catch (e) {
|
|
reject(e)
|
|
}
|
|
return
|
|
}
|
|
|
|
if (res.statusCode !== 200) {
|
|
uni.showToast({
|
|
title: res.data?.message || '请求失败',
|
|
icon: 'none'
|
|
})
|
|
reject(new Error(res.data?.message || '请求失败'))
|
|
return
|
|
}
|
|
|
|
resolve(res.data)
|
|
},
|
|
fail: (err) => {
|
|
uni.showToast({
|
|
title: '网络错误',
|
|
icon: 'none'
|
|
})
|
|
reject(err)
|
|
}
|
|
})
|
|
})
|
|
},
|
|
|
|
get(url, params) {
|
|
return this.request({ url, method: 'GET', data: params })
|
|
},
|
|
|
|
post(url, data) {
|
|
return this.request({ url, method: 'POST', data })
|
|
},
|
|
|
|
put(url, data) {
|
|
return this.request({ url, method: 'PUT', data })
|
|
},
|
|
|
|
delete(url) {
|
|
return this.request({ url, method: 'DELETE' })
|
|
}
|
|
}
|