本文实例讲述了微信小程序封装的HTTP请求。分享给大家供大家参考,具体如下:
微信小程序里自己封装了请求的函数,但几乎每个页面都要用到,所以为什么更方便的调用,再一次进行封装。
在app.js里面定义个全局对象,这样想要用到该函数,只需要在该页面的js文件里面,请求一个app实例。
废话不多说,先上代码:
//全局对象httpClient httpClient:{ request:function(method,url,data){ //返回一个promise实例 return new Promise( (resolve,reject)=>{ wx.request({ url:url, data:data, mehtod:method, success:function(res){ resolve(res) }, fail:function(res){ reject(res); }, complete:function(){ console.log('complete'); } }) }) } //get方法:用来获取数据 get:function( url ) { return this.request('GET',url); }, //post方法:用来更新数据 post:function( url,data) { resturn this.request('POST',url,data); }, //put方法 put:function(url,data){ return this.request('PUT', url, data); }, //delete方法 delete:function(url,data){ return this.request('DELETE', url, data); }
在需要请求的页面调用:
例如:登录页面login.js
//获取app实例,从而调用全局对象的函数 var app=getApp(); login:function(){ var url='http:xxxxx/login'; var data={ userName:'xxxxx', passwd:'xxxxxx' } app.httpClient.post( url,data ) .then( res=>{console.log("请求成功时调用该函数")}) .catch(res=>{console.log("请求失败时调用该函数")}) } //为了更好的阅读,也可以将回调函数,定义在外面 //这样 loginSuccess:function(){ console.log("请求成功时调用该函数") }, loginFail:function(){ console.log("请求失败时调用该函数") }, login:function(){ var self=this; var url='http:xxxxx/login'; var data={ userName:'xxxxx', passwd:'xxxxxx' } app.httpClient.post( url,data ) .then( res=>self.loginSuccess()) .catch(res=>self.loginFail()) }
是不是简洁多了。。。。
附:升级版
上代码
// 该函数怎么写,需要跟后端人员协商返回的格式 function getErrorMsgByErrorNo(error_no) { let error_msg; switch (error_no) { case 100: error_msg = '操作失败,请稍后再试!'; break; default: error_msg = '网络错误,请稍后再试!'; break; } return error_msg; } function handleData(res) { if (res.data.success) { if (typeof (res.data.body) === 'string') { return []; } else if (Array.isArray(res.data.body) === false) { const _arr = []; _arr.push(res.data.body); return _arr; } else { return res.data.body; } } else { if (res.data.error_no) { return { error_no: res.data.error_no, error_msg: getErrorMsgByErrorNo(res.data.error_no) }; } else { return { error_no: 123456, error_msg: '服务器维护中,请稍后!' }; } } } const httpClient = { request: function (method, url, data) { return new Promise((resolve, reject) => { wx.request({ url: url, data: data, method: method, success: function (res) { resolve(handleData(res)) }, fail: function (err) { console.log('request fail ', err); resolve({ error_no: 100, error_msg: getErrorMsgByErrorNo(100) }) }, complete: function (res) { console.log("request completed!"); } }) }); }, get: function (url) { return this.request('GET', url); }, post: function (url, data) { return this.request('POST', url, data); }, put: function (url, data) { return this.request('PUT', url, data); }, delete: function (url, data) { return this.request('DELETE', url, data); }, }; module.exports = httpClient;
使用
function getMyselfData() { const _Url= urls.url; return httpClient.get(_Url); } getData() { let resultsData = this.getMyselfData(); resultsData.then((res) => { if (res.error_no) { // 只要有error_no就说明请求出现了错误 this.toast.showToast({ type: 'fail', title: res.error_msg, }) } else { this.setData({ journeyList: res.data }) } }); },
希望本文所述对大家微信小程序开发有所帮助。
标签:
微信小程序,封装,HTTP请求
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“微信小程序封装的HTTP请求示例【附升级版】”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2025年01月11日
2025年01月11日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]