您的位置:首页 > 移动开发 > 微信开发

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

2019-09-18 08:49 537 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/Ambitiouss/article/details/100971307

提出前景:

最开始学编程的时候呢,不知道写了多少重复代码....哈哈 嘲讽一下。后来出来上班了,前端架构师有要求。尽量压缩代码。
写好注释(因为一个人不可能一辈子只待在一个企业,这样的话有助于后来同事接手,和一个平台的稳定性)。这些观点非常
认同。

提出前问题:

小程序和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)

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: