// 必须对外暴露一个方法,而且得返回一个promise对象
const BASE_URL = 'http://119.29.194.223:88'

function request({
	url,
	method = 'GET',
	isAuth,
	data = {},
}) {
	return new Promise((resolve, reject) => {

		// 默认header是空对象,用户无须登陆态,header可以传空对象
		let header = {}

		// 需要登陆态
		if (isAuth) {
			let token = uni.getStorageSync('token')
			// 如果没有token,跳转login
			if (!token) {
				uni.navigateTo({
					url: '/pages/login/login.vue'
				})
				// return reject(new Error('请先登录'))
			}
			// 如果需要登陆态,就传递token,否则就不传
			header.Authorization = token
		}

		// 请求前,开启Loading
		uni.showLoading({
			title: '加载中...',
			mask: true
		});
		
		uni.request({
			url: BASE_URL + url,
			method,
			// header:header,
			header,
			data,
			success: res => {
				// 解构返回的数据
				let {
					msg,
					status,
					data
				} = res.data
				if (status === 1000) {
					// 如果meta.status===200,才表示数据是正确
					resolve(data)
				}else{
					uni.showModal({
						content: msg,
						showCancel:false
					})
					reject(msg)
				}
			},
			fail() {
				// 一般是网络错误
				uni.showModal({
					content:'网络错误请重试',
					showCancel:false
				})
				reject(new Error('网络错误请重试'))
			},
			complete() {
				// 请求结束后关闭Loading
				uni.hideLoading()
			}
		});
	})
}

export default request

在main.js引入放到原型里

// 导入request
import request from "./utils/request.js"
// 把request添加的Vue的原型中
Vue.prototype.$request = request

页面使用,在需要验证token的接口,就传入参数 isAuth:'true' 就行了

async chongzhiData() {
				let data = await this.$request({
					url: '/api/Yun/getindexchong?symbol=USDT',
					isAuth: 'true',
				});
					// console.log(res.data);
					this.weixinUrl = data.address;
					for (let i = 0; i < data.symbol.length; i++) {
						this.array.push(data.symbol[i].name)
						this.lian_address.push(data.symbol[i].lian_address)
					};
					// console.log(this.array)
			},

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐