export default {
config: {
baseURL: 'https://xxx.xxx.com',
header: {},
dataType: 'json',
// #ifndef MP-ALIPAY || APP-PLUS
responseType: 'text',
// #endif
// 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部)
custom: {
auth: true
}, // 全局自定义参数默认值
// #ifdef MP-ALIPAY || MP-WEIXIN
timeout: 30000,
// #endif
// #ifdef APP-PLUS
sslVerify: true,
// #endif
// #ifdef H5
// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
withCredentials: false,
// #endif
// #ifdef APP-PLUS
firstIpv4: true, // DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+)
// #endif
// 局部优先级高于全局,返回当前请求的task,options。请勿在此处修改options。非必填
// getTask: (task, options) => {
// 相当于设置了请求超时时间500ms
// setTimeout(() => {
// task.abort()
// }, 500)
// },
// 全局自定义验证器。参数为statusCode 且必存在,不用判断空情况。
validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置
console.log("---全局验证Code---", statusCode)
}
},
// 请求拦截器配置
beforeRequest: function (config) {
console.log(config, "------")
if (config.custom.auth) {
// token
let token = uni.getStorageSync('authenticate')
config.header["authenticate"] = token
console.log("token", token)
} else {
console.log("不需要token")
}
return config
},
// 响应拦截器配置
beforeResponse: (response) => { /* 对响应错误做点什么 (statusCode !== 200)*/
console.log(response, "????????")
if (!response.config.custom.auth && response.statusCode == 200) {
console.log("保存token")
uni.setStorageSync('authenticate', response.data.token)
return response
}
if (response.statusCode >= 500) {
console.log("服务器异常")
return Promise.reject(response)
} else if (response.statusCode == 401) {
console.log('...........................')
//登录判断
uni.navigateTo({
// #ifdef H5
url: '/pages/login/login',
//#endif
// #ifdef MP-WEIXIN
url: '/pages/wxlogin/wxlogin',
//#endif
// #ifdef APP-PLUS
url: '/pages/login/login',
//#endif
});
return Promise.reject(response)
} else {
console.log("---继续执行---")
return Promise.resolve(response)
}
}
}
/*****************-拦截器-************************* */
router.beforeEach(({name}, from, next) => {
if (sessionStorage.getItem('token')) {
// 如果用户在login页面
if (name === 'Login') {
next();
} else {
next();
}
} else {
// 不进行拦截
if (name === 'Login' || name === 'weChat' || name === 'tipsDown') {
next();
} else {
ElementUI.Message({
message: '登录超时,请重新登录',
type: 'error'
})
setTimeout(()=>{
next({name: 'Login'});
},1500)
}
}
});
// 拦截器请求
axios.interceptors.request.use(
config => {
if (sessionStorage.token) {
// 判断是否存在token,如果存在的话,每个http header都加上Authorization
config.headers.Authorization = `${sessionStorage.token}`;
}
return config;
},
err => {
return Promise.reject(err);
})
// 拦截器响应
axios.interceptors.response.use(function (response) {
if (response.data.code == 401){
window.location.href = "/";
ElementUI.Message({
message: '登录超时,请重新登录',
type: 'error'
})
}
return response
}, function (error) {
return Promise.reject(error)
})
用在mian,js 直接复制
另一种小程序
var Fly=require("./wx") //wx.js为您下载的flyio源码文件
var fly = new Fly();
fly.config.timeout = 30000;
/**
* 定义各个API的 baseURL
*/
const baseURL = {
'BASE': 'https://diancaidian.sdjwkj.cn', // 基础主要业务
'BAIDU': 'https://aip.baidubce.com/oauth/2.0/token', // 百度Api
};
//配置请求基地址
//fly.config.baseURL='https://diancaidian.sdjwkj.cn';
//添加请求拦截器
fly.interceptors.request.use(request => {
//给所有请求添加自定义header
request.headers['content-type'] = 'application/json';
const token = uni.getStorageSync('token'); //关于token的用法
console.log(JSON.stringify(token));
if (token) {
request.headers['Authorization'] ='Bearer ' + token;
}
//可以显式返回request, 也可以不返回,没有返回值时拦截器中默认返回request
return request;
});
fly.interceptors.response.use((response, promise) => {
// wx.hideNavigationBarLoading()
//uni.hideLoading();
// if (!(response && response.data && response.data.res === 0)) {
// errorPrompt(response)
// }
return promise.resolve(response.data)
}, (err, promise) => {
// wx.hideNavigationBarLoading()
//uni.hideLoading();
// errorPrompt(err)
return promise.reject(err)
})
export default fly;
import fly from './utils/fly.js'; // 引入fly.js文件
// 线上
const HOST = 'https://diancaidian.sdjwkj.cn'
const env = '/prod-api'
export default {
// 获取小程序的sessionkey
getWxSessionKey: (params) => {
return fly.post(HOST + env + '/api/xiaochengxun/login', params); //get方式调取http://***/device
},
sysconfGetConf: (params) => {
return fly.post(HOST + env + '/api/sysconf/getConf', params, {
headers: {
"content-type": "application/json",
}
});
},
}
getDemo: async function() {
if(uni.getStorageSync('token')){
getApp().globalData.token = 'Bearer '+uni.getStorageSync('token')
let res = await _self.$api.nongjuList({})
if (res.code === 200) {
console.log(res, 'shuju')
_self.dataList = res.data
} else {
setTimeout(()=>{
_self.getNongjuList()
},1000)
}
}else {
setTimeout(()=>{
_self.getDemo()
},1000)
}
},