uniapp encapsulates the request and verifies that the token expires

record yourself

ccommon folder request.js file

const BASE_URL = 'https://*****'
export const request = (options) => {
	// 在这里可以对请求头进行一些设置
	// 例如:
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + options.url || '',
			method: options.method || 'GET',
			data: options.data || {},
			header: options.header || {
				// 根据实际接口设计 key 取 token 或者 authorization
				'token': uni.getStorageSync('token_key')
			},
			success: (res) => {
				// console.log(res.data);		// 控制台显示数据信息
				resolve(res)
				if(res.data.code == 401){
					uni.showToast({
							title: '您未登录请登录操作',
							duration: 2000,
							icon: 'none',
							success: () => {
								setTimeout(() => {
									uni.reLaunch({
										url: '/pages/login/login'
									})
								}, 1000)
							}
					
						});
						return;
				}else{
					uni.request({
						url: 'https://******', //检查token时间
						method: 'GET',
						data: {
							token: uni.getStorageSync('token_key')
						},
						success: (res) => {
							// console.log(res.data);
							console.log("time=>", res.data.data.expires_in)
							if (res.data.data.expires_in < 86400 ) {
								console.log('刷新token')
								// 刷新token
								uni.request({
									url: 'https://*******', //刷新token
									data: {
										token: uni.getStorageSync('token_key')
									},
							
									success: (res) => {
										console.log(res.data);
										uni.setStorageSync('token_key', res.data.data.token)
										console.log('刷新完无需跳转页面')
									}
								});
							}
						}
					});
				}
				
			},
			fail: (err) => {
				// 页面中弹框显示失败
				uni.showToast({
					title: '请求接口失败',
					icon: "none"
				})
				// 返回错误消息
				reject(err)
			},
			catch: (e) => {
				console.log(e);
			}
		})
	});
}

main.js page

//封装请求
import {request} from 'common/request.js'
Vue.prototype.$request = request //挂载vue的原型上,全局可以使用

page use

this.$request({
					url: '/sys/version',
					data: {

					},
				}).then(res => {
					console.log(res)
})

Guess you like

Origin blog.csdn.net/qq_59175937/article/details/127422390