import useHost from '@/config/env.host'
// 添加拦截器
const httpInterceptor = {
// 拦截前触发
invoke(options: UniApp.RequestOptions) {
uni.showLoading({
title: '加载中'
})
if (!options.url.startsWith('http')) {
options.url = useHost + options.url
}
options.timeout = 10000
options.header = {
,
...options.header,
}
},
}
uni.addInterceptor('request', httpInterceptor)
uni.addInterceptor('uploadFile', httpInterceptor)
// http 请求
type Data<T> = {
code: string
msg: string
result: T
}
export const http = <T>(options: UniApp.RequestOptions) => {
// 返回 Promise 对象
return new Promise<Data<T>>((resolve, reject) => {
uni.request({
...options,
success(res) {
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(res.data as Data<T>)
} else {
// 3.2 其他错误 -> 根据后端错误信息轻提示
useToast((res.data as Data<T>).msg || '请求失败')
reject(res)
}
},
fail(err) {
// 3.3 网络错误 -> 提示用户换网络
useToast('网络错误,换个网络试试~')
},
complete: () => {
uni.hideLoading()
}
})
})
}
10-05
2974
11-29
386
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交