uni-app二次封装接口请求

uni-app二次封装接口请求,使用Promise实现链式回调


class HTTP {
	request({
		url,
		data = {},
		method = 'POST'
	}) {
		return new Promise((resolve, reject) => {
			this._request(url, resolve, reject, data, method)
		})
	}
	
	_request(url, resolve, reject, data, method) {
		uni.request({
			url: `${apiUrl}/${merchant_id}${url}`,
			method: method,
			data: method==='POST' ? qs.stringify(data) : data,
			header: {
				'Content-Type': 'application/x-www-form-urlencoded',
				'Authorization': 'Bearer ' + auth.getToken(),
				'from-id': getApp() != undefined ? getApp().globalData.from_id : ''
			},
			success: (res) => {
				const code = res.statusCode.toString()
				if (code.startsWith('2')) {
					// 请重新登录
					if (res.data.code === 202) {
						uni.clearStorageSync()
						getApp().globalData.isLogin = 1
						this.$Router.pushTab({
							path: '/pages/user/index'
						})
						return
					}
					// 数据响应
					if (res.data.code === 200) {
						resolve(res.data.data)
					} else {
						this.show_error(res.data.message)
						reject(res.data.message)
					}
				} else {
					reject()
					this.show_error(res.data.message)
				}
			},
			fail: (err) => {
				reject()
				this.show_error('网络错误')
			}

		})
	}
	show_error(msg) {
		wx.showToast({
			title: msg,
			icon: 'none',
			duration: 2000
		})
	}
	
}

export {
	HTTP
}


实战使用:

第一:创建model目录,底下在创建apiModel.js
import {
	HTTP
} from '../utils/http.js'

class apiModel extends HTTP {
	
	// 商户登录
	Auto_Login(data={}) {
		return this.request({
			url: '/auth/login',
			data: data
		})
	}
}

const api = new apiModel()

export {
	api
}


第二:挂载在main.js中
import { api } from './model/apiModel.js'
Vue.prototype.$Api = api;

第三:组件上使用
this.$Api.Home_Data({
    page:1,
    pageSize:10
}).then(res => {
	this.homeData = res
	this.isLoading = false
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值