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} 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
}