微信小程序ES6方法Promise封装接口
为何要封装接口?
有小程序开发的经验者,相信对微信API Request很熟悉了。对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据。诚然,直接使用api发起请求对接接口开发速度是快的,可是,一旦对接的接口多了起来,这样简单,直接的方法出现了很多缺陷。
- 难以维护。域名被换或者接口名被换,修改接口名得一个个文件找,而且可能不清楚有多少文件调用了需要修改的接口,导致效率低下
 - 难以管理。无法了解到底用了哪些接口,难于统一修改,除非一个个找出了,并其归纳
 - 代码重复。有些接口参数复用率很高,比如token、code…。调用接口总是要写上一两遍,验证是否登录也总是要带上
 
Promise封装接口
要是你不了解ES6 Promise,推荐看这个文档https://www.jianshu.com/p/063f7e490e9a
一、在utils文件夹创建base.js、https.js、ports.js三个js文件
base.js用于管理域名
https.js用于请求前的处理和请求后的处理
ports.js用于封装一个个接口

二、处理https.js,封装get和post请求,简单处理请求前后的问题
https.js:
//封装GET请求
function _get({url,data}){
//为了用户体验,加一个loading效果
  return new Promise((resolved,rejected)=>{
     const obj = {
       url,
       data,
       method:'GET',
       success:(res)=>res.statusCode===200?resolved(res.data):rejected(res.data),
       fail:(err)=>rejected(err),
    complete:()=>{wx.hideLoading();}
     }
     wx.request(obj)
   })
}
//封装POST请求
function _post({url,data}){
//为了用户体验,加一个loading效果
  return new Promise((resolved,rejected)=>{
     const obj = {
       url,
       data,
       method:'POST',
       success:(res)=>res.statusCode===?resolved(res.data):rejected(res.data),
       fail:(err)=>rejected(err),
    complete:()=>{wx.hideLoading();}
     }
     wx.request(obj)
   })
}
//导出封装的_post方法
export default {
  _post,
  _get
}
三、在base.js中保存域名、接口
base.js:
//域名
const testurl ='http://t.weather.sojson.com';
const base={
/*测试接口*/
test1:testurl+'/api/weather/city/101030100'
}
export default base;
三、准备封装一个个接口了,封装test1这个接口试试看
ports.js
import base from './base.js';
import https from './https.js';
const ajax={
test1:()=>{
return https._get({ url: base.test1})
}
}
export default ajax;
四、将封装好的接口导入app.js,在App中实例化

五、调用下封装的接口,看看效果如何。随便在某一个页面onload中调用,调用代码如下:
   getApp().ports.test1().then((res)=>{
      console.log(res,'能否?');
    }).catch(()=>{console.error('出啥错了?');});  
效果如下:

六、还想再对接其它接口,常用域名存在base.js,封装接口存在ports.js中就行,好管理又有序,看着都舒服。

源码:https://gitee.com/murenziwei/wx_ports
微信小程序ES6方法Promise封装接口的更多相关文章
- 微信小程序开发——使用promise封装异步请求
		
前言: 有在学vue的网友问如何封装网络请求,这里以正在写的小程序为例,做一个小程序的请求封装. 关于小程序发起 HTTPS 网络请求的Api,详情可以参考官方文档:wx.request(Object ...
 - 小程序api的promise封装
		
微信小程序和支付宝小程序的api封装方法是一样的,都是外部新建一个js,使用module.exports导出,要注意的是,最好使用post请求,虽然get请求没什么不好,主要是好修改.这里使用的MD5 ...
 - 微信小程序request请求的封装
		
目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...
 - 【微信小程序】调用wx.request接口需要注意的问题
		
写在前面 之前写了一篇<微信小程序实现各种特效实例>,上次的小程序的项目我负责大部分前端后台接口的对接,然后学长帮我改了一些问题.总的来说,收获了不少吧! 现在项目已经完成,还是要陆陆续续 ...
 - (一)微信小程序之模拟调用后台接口踩过的坑
		
如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...
 - 微信小程序之巧妙的封装
		
巧妙的封装 暴露一个访问地址xapp.config.js module.exports = { api_host: `https://a.squmo.com/yizu` } 继续引入,加暴露api.c ...
 - 微信小程序统一服务消息下发接口 公众号和小程序消息都可以在一个接口推送了
		
昨天晚上,2018年9月11日,微信官方又更新了一大波的小程序功能.重点我们来谈谈这个功能,微信叫做统一服务消息下发接口. 这个是官方的文档 统一服务消息 · 小程序https://develope ...
 - 微信小程序支付、小程序支付功能、小程序支付方法、微信小程序支付方法
		
相信大家在做小程序的时候不可避免的会碰到支付功能小程序的支付和pc的是有区别的小程序的支付方法为 wx.requestPayment wx.requestPayment({ timeStamp: '' ...
 - 微信小程序授权登录--PHP后端接口
		
由于之前做过公众号的一个开发,所以再开发小程序就没有那么多坑了,在这也记录一下开发过程,以方便后续进行参考. 废话不多说,直接上官方文档,任何使用第三方开发的,不看文档就是耍流氓.小程序开发文档,可以 ...
 
随机推荐
- WPF 验证错误模板
			
<Window x:Class="BindingExam.MainWindow" xmlns="http://schemas.microsoft.co ...
 - Qt中嵌入Directx11(有句柄就可以)
			
最近要做个游戏场景编辑器,需要directx11配合gui框架使用,所以简单地弄了一个directx11嵌入到Qt窗体中的程序. 1 建立工程 建一个Qt的工程,配置好directx的包含目录和库目录 ...
 - FreeNAS 11.0 正式发布,提供 S3 兼容的对象存储服务
			
FreeNAS 11.0 正式版已发布,该版本带来了新的虚拟化和对象存储功能.FreeNAS 11.0 将 bhyve 虚拟机添加到其受欢迎的 SAN / NAS.Jail 和插件中,让用户可以在 F ...
 - WPF 在一个dll创建一个Window(包含xaml),在另一个dll中再次继承 会出错
			
https://social.msdn.microsoft.com/Forums/vstudio/en-US/e92390eb-bbfa-42fb-baa9-2286444c0dca/the-comp ...
 - 使用ArcGIS Server发布我们的数据
			
原文:使用ArcGIS Server发布我们的数据 引言 上一篇我们已经安装好了ArcGIS体系的服务软件,这一篇将介绍如何把我们自己的数据通过ArcGIS Server发布出去,并且能够通过Web页 ...
 - shell产生随机数
			
#!/bin/bash # 每次调用$RANDOM都会返回不同的随机整数. # 一般范围为: - (有符号的16-bit整数). MAXCOUNT= count= echo echo "$M ...
 - Android零基础入门第34节:Android中基于监听的事件处理
			
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
 - Redaht7/Oracle Linux7 + ORA11g : ohasd fails to start(Doc ID 1959008.1)
			
APPLIES TO: Oracle Database - Standard Edition - Version 11.2.0.4 to 12.1.0.1 [Release 11.2 to 12.1] ...
 - Windows下获取逻辑cpu数量和cpu核数量(用GetLogicalProcessorInformation,从XP3才开始有的API)
			
代码可在Windows NT下正常运行 具体API说明请参照如下文档: GetLogicalProcessorInformation 点击打开链接 点击打开链接 点击打开链接 typedef BOOL ...
 - justgage.js的使用
			
网址:http://justgage.com/ [1]需引入的文件: <!-- 引入 justGage相关js --><script src="js/raphael-2.1 ...