uniappパッケージのrequest.jsファイル(応答ブロック機能を含む)
11513 ワード
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
}