uniapp 小程序封装异步(get/post/delete/put)共用

提出前景:

太多重复代码了,还是提出简洁些。

提出前问题:

小程序和vue也是这段时间学习。对我来说,刚学一种语言就要提出他的公共部分对我是有难度的(不知道语法和vue能不能和js直接交互,怎样把需要重复使用的代码提出更好的公共脚本)。

尝试提出:

开始提出的时候呢,我以为直接创建一个工具文件夹,然后里面写.vue后缀文件异步代码export 导出,在需要使用的地方导入就ok,然而想象很美好,现实很骨感啊。写了,尝试的时候呢:(由于是小程序嘛,uniapp编译,微信开发工具查看)结果编译都失败…行吧网上找找资料吧.

正式提出:
咱们先来看看我的小程序目录结构
在这里插入图片描述我打箭头哪里呢就是我提出异步共用模块在工程的位置。后续有共用代码都可以写成一个或多个文件反复这里,但是要记得导出,和需要用的地方导入。
哈哈,不知道怎么导出,导入?,来,我们接着看下面。我来教你(我也刚学会熟练。其实很简单的)
我就直接贴代码了(这部分是共用方法和怎么导出去)。

	// 预处理返回的数据,防止后台服务不在线时,返回不合法数据
	 function preHandleResult(res) {
		 // if (res.errMsg.trim() != "request:ok") {
			// showTip.showSuccessTip("后台服务不在线...", 2500);
		  //}
		 // success: (res) => {
			 // console.log(1);
		 // }
	 }
	 // 请求末尾加token
	 function appendToken (url) {
		 if (url.indexOf("?") == -1) {
		 		url += "?"
		 	} else {
		 		url += "&"
		 	}
		 	url += "access_token=" + accesstoken;
		 	return url;
	 } 
 
	 // appendToken(url) 
	 function request_get (url, param, successCallback, failCallback) {
		var _this = this;
		uni.request({
		    url: url, 
		    data: param,
			dataType: 'json',
			method: 'GET',
		    header: {
		        'custom-header': 'get', //自定义请求头信息
				'content-type': 'application/json' // 默认返回json格式,可以不加(加上是为了后面方便维护)
		    },
		    success: (res) => {
				preHandleResult(res);
				if(successCallback){
					 successCallback(res);
				}
		    },
			fail: (res) => {
				preHandleResult(res);
				if(failCallback){
					 failCallback(res);
				}
			}
		});
	 }
	
	 function request_post (url, param, successCallback, failCallback) {
		var _this = this;
		uni.request({
		    url: url, 
		    data: param,
			dataType: 'json',
			method: 'POST',
		    header: {
		        'custom-header': 'post',
				'content-type': 'application/json'
		    },
		    success: (res) => {
				preHandleResult(res);
				if(successCallback){
					 successCallback(res);
				}
		    },
			fail: (res) => {
				preHandleResult(res);
				if(failCallback){
					 failCallback(res);
				}
			}
		});
	 }
	 
	 function request_put (url, param, successCallback, failCallback) {
	  	var _this = this;
	  	uni.request({
	  	    url: url, 
	  	    data: param,
	  		dataType: 'json',
	  		method: 'PUT',
	  	    header: {
	  	        'custom-header': 'put',
	  			'content-type': 'application/json'
	  	    },
	  	    success: (res) => {
	  			preHandleResult(res);
	  			if(successCallback){
	  				 successCallback(res);
	  			}
	  	    },
	  		fail: (res) => {
	  			preHandleResult(res);
	  			if(failCallback){
	  				 failCallback(res);
	  			}
	  		}
	  	});
	 }
	 
	 function request_delete (url, param, successCallback, failCallback) {
	  	var _this = this;
	  	uni.request({
	  	    url: url, 
	  	    data: param,
	  		dataType: 'json',
	  		method: 'DELETE',
	  	    header: {
	  	        'custom-header': 'delete',
	  			'content-type': 'application/json'
	  	    },
	  	    success: (res) => {
	  			preHandleResult(res);
	  			if(successCallback){
	  				 successCallback(res);
	  			}
	  	    },
	  		fail: (res) => {
	  			preHandleResult(res);
	  			if(failCallback){
	  				 failCallback(res);
	  			}
	  		}
	  	});
	 }
	 // 上面就是异步请求get/post/put/delete的封装了,到时候你直接导入正确传入参数就可以用这里的异步请求方法了。
	 // 当然需要先导出去,你才能导入其他地方引用。下面这就是导出。
	 // 你调用的时候是调 url_Request_get(url,param,success,fail) 方法。而不是function request_get(url,param,success,fail);
	 // 既然都导出去了,那我们就去别的地方引用去。
	export default {
			url_Request_get: function (url, param, success, fail) {
				return request_get (url, param, success, fail);
			},
			url_Request_post: function (url, param, success, fail) {
				return request_post (url,param,success,fail);
			},
			url_Request_put: function (url, param, success, fail) {
				return request_put (url,param,success,fail);
			},
			url_Request_delete: function (url, param, success, fail) {
				return request_delete (url,param,success,fail);
			}
		}

这部分是把共用的导入应用

	<script>
	import http from '../../common/ajax.js';
	import showTip from '../../common/showTips.js';	
直接在你的应用页这样导入就好了,位置你自己放。这里是个参考。

在这里插入图片描述
这里的名字你可以自己随意取,当然不要取一些关键字最好。(我这里只是个demo)

点个赞,或者留个眼再走吧

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值