UNIAPP的request请求封装

request.js代码

import $store from "@/store/index.js";

export default{
	common:{
		baseUrl:"你的url",
		header:{
			'Content-Type':'application/json;charset=UTF-8',
		},
		data:{},
		method:"GET",
		dataType:'json'
	},
	request(options={}){
		//组织参数
		options.url=this.common.baseUrl+options.url
		options.header=options.header||this.common.header
		options.data=options.data||this.common.data
		options.method=options.method||this.common.method
		options.dataType=options.dataType||this.common.dataType
		
		//token验证
		if(options.token){//如果开发者写的接口请求token:true
			options.header.token=$store.state.user.token
			//二次验证(防止token为空,也去访问服务器)
			if(options.checkToken&&!options.header.token){
				uni.showToast({
					title: '请先登录',
					icon:"none"
				});
				uni.navigateTo({
					url:"/pages/login/login"
				})
			}
		}
		
		
		//请求
		return new Promise((res,rej)=>{
			//请求之前...todo
			//请求中
			uni.request({
				...options,
				success: (result) => {
					//返回原始数据(请求中携带native)
					if(options.native){
						return res(result)
					}
					//服务端请求失败
					if(result.data.code!==0){
						if (options.toast !== false) {//控制显示服务器失败是否显示
							uni.showToast({
								title: result.data.msg || '服务端失败',
								icon: 'error'
							});
						}
						return rej(result.data)
					}
					//成功
					return res(result.data.data)
				},
				//请求失败(这里的请求失败是移动端请求失败)
				fail: (error) => {
					uni.showToast({
						title: '请求失败'||error.errMsg,
						icon:"none"
					});
					return rej(error)
				},
			});
		})
	},
	//get请求
	get(url,data={},options={}){
		options.url=url
		options.data=data
		options.method="GET"
		return this.request(options)
	},
	//post请求
	post(url,data={},options={}){
		options.url=url
		options.data=data
		options.method="POST"
		return this.request(options)
	},
	//delet请求
	del(url,data={},options={}){
		options.url=url
		options.data=data
		options.method="DELETE"
		return this.request(options)
	}
}

全局挂载

main.js中写入

// 引入request库
import $H from "@/utils/request.js"
Vue.prototype.$H=$H

页面使用示例

this.$H.post('/register',{
							"username":this.username,
							"password":this.password
					}).then((res)=>{
						console.log("注册成功",res);
						uni.showToast({
							title: '注册成功,请登录',
							icon:"success"
						});
					}).catch((err)=>{
						console.log("注册失败",err);
					})
				})

说明:

三种请求分别为this.$H.get,this.$H.post,this.$H.del

请求携带三个参数,(url,data={},options={}),其中

  • url为基础的request.js中的baseUrl拼接上请求的url,例如:baseUrl:"www.baidu,com",参数url:"/login“,则实际访问的接口为:www.baidu,com/login
  • data为携带的数据
  • options可以写native=“true”和toast="false",第一个native表示返回数据库返回的原始全部数据,第二个代表不用我封装好的提示,自己写特殊的失败提示。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国服第三切图仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值