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();
request.validateStatus = (statusCode) => {
return statusCode && statusCode >= 200 && statusCode < 300
}
request.interceptor.request(request => {
const header = request.header
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) => {
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){
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"
})
return response
})
export {
request
}