uniapp 封装好的request.js文件(包含响应拦截功能)
uniapp封装好的request.js文件(包含响应拦截功能)import Vue from 'vue'import Request from './core/Request'import {isObject} from './utils.js'import {doLoginFromCache} from '@/static/api/login.js'import { getToken} fro
·
uniapp 封装好的request.js文件(包含响应拦截功能)
import Vue from 'vue'
import Request from './core/Request'
import {
isObject
} from './utils.js'
import {doLoginFromCache} from '@/static/api/login.js'
import { getToken} from '@/static/utils/auth'
import store from '@/store/index.js'
var request = new Request();
/*
普通的请求
*/
/**
* 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject)
* @param { Number } statusCode - 请求响应体statusCode(只读)
* @return { Boolean } 如果为true,则 resolve, 否则 reject
*/
request.validateStatus = (statusCode) => { // 默认
return statusCode && statusCode >= 200 && statusCode < 300
}
/* 请求拦截器 */
request.interceptor.request(request => {
const header = request.header
// console.log("getToken() = " + getToken())
header['Authorization'] = getToken()
request.header = header
return request
})
request.interceptor.response((response) => {
/**
* 响应拦截
*/
if (response && response.data) {
const data = response.data
const status = data.status
if (status >= 200 && status < 300) {
return data.data;
}else {
if(data.message){
uni.showToast({
title: data.message,
icon: "none"
})
}
}
}
console.log(response)
return response
},
(response) => { /* 对响应错误做点什么 (statusCode !== 200),必须return response*/
console.error(response)
let message = isObject(response) ? response.errMsg : response
if(isObject(response) && response.data && response.data.message){
message = response.data.message
if(response.statusCode == 401){
/* 该请求需要授权登录访问
1:判断缓存中是否有用户的账号密码信息
如果有,直接执行登录
如果没有,跳转到登录界面
*/
const result = doLoginFromCache(store.state.loginFrom.request)
console.log(result,'报错的信息');
if(result){
// 缓存用户信息获取成功
uni.showToast({
title: "出错了,请重试",
icon: "none"
})
}else{
// 缓存用户信息获取失败
//跳转到登录界面
uni.navigateTo({
url:"/pages/login/login",
animationDuration: 200
})
}
return response
}
}
uni.showToast({
title: message,
icon: "none"
})
// console.error(response)
return response
})
export {
request
}
更多推荐
所有评论(0)