uni-app的http请求的全局配置及拦截器配置
// 此vm参数为页面的实例,可以通过它引用vuex中的变量module.exports = (vm) => {// 初始化请求配置uni.$u.http.setConfig((config) => {/* config 为默认全局配置*/config.baseURL = 'https://api.shop.eduwork.cn' /* 根域名 */// config.header =
·
// 此vm参数为页面的实例,可以通过它引用vuex中的变量
module.exports = (vm) => {
// 初始化请求配置
uni.$u.http.setConfig((config) => {
/* config 为默认全局配置*/
config.baseURL = 'https://api.shop.eduwork.cn' /* 根域名 */
// config.header = {
// 'Content-Type': 'application/x-www-form-urlencoded'
// }
config.timeout = 10000
return config
})
// 请求拦截
uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
if (vm.$store.state.login.token_type && vm.$store.state.login.token)
config.header['Authorization'] = vm.$store.state.login.token_type + vm.$store.state.login.token
else {
vm.$u.route({
url: 'pages/login/login',
})}
return config
}, config => { // 可使用async await 做异步操作
return Promise.reject(config)
})
// 响应拦截
uni.$u.http.interceptors.response.use((response) => {
/* 对响应成功做点什么 可使用async await 做异步操作*/
const {
statusCode,
data,
} = response;
if(response.data){
if (200 <= statusCode < 300) return data
else if (statusCode === 400) {
vm.$u.toast(data.message)
return false
} else if (statusCode === 401) {
vm.$u.toast('验证失败,请重新登录')
setTimeout(() => {
vm.$u.route('@/pages/login/login')
}, 1000)
} else if (statusCode === 400) {
const {
errors
} = data
vm.$u.toast(Object.values(errors)[0][0])
return false
} else return data.message
}
else{
return response
}
}, (response) => {
// 对响应错误做点什么 (statusCode !== 200)
return Promise.reject(response)
})
//增加patch请求
vm.$u.patch = (url, params = {}) => {
// 模拟patch请求
const _params = {
...params,
_method: 'PATCH'
}
console.log(uni.$u.http.post);
return uni.$u.http.post(url, _params)
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)