为何要封装接口?


有小程序开发的经验者,相信对微信API Request很熟悉了。对接接口时,有大部分的开发者都是直接调用request方法,去请求后台接口并渲染数据。诚然,直接使用api发起请求对接接口开发速度是快的,可是,一旦对接的接口多了起来,这样简单,直接的方法出现了很多缺陷。

  1. 难以维护。域名被换或者接口名被换,修改接口名得一个个文件找,而且可能不清楚有多少文件调用了需要修改的接口,导致效率低下
  2. 难以管理。无法了解到底用了哪些接口,难于统一修改,除非一个个找出了,并其归纳
  3. 代码重复。有些接口参数复用率很高,比如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效果

 
    wx.showLoading({title:'加载中',mask:true});

  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效果
 
    wx.showLoading({title:'加载中',mask:true});
  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封装接口的更多相关文章

  1. 微信小程序开发——使用promise封装异步请求

    前言: 有在学vue的网友问如何封装网络请求,这里以正在写的小程序为例,做一个小程序的请求封装. 关于小程序发起 HTTPS 网络请求的Api,详情可以参考官方文档:wx.request(Object ...

  2. 小程序api的promise封装

    微信小程序和支付宝小程序的api封装方法是一样的,都是外部新建一个js,使用module.exports导出,要注意的是,最好使用post请求,虽然get请求没什么不好,主要是好修改.这里使用的MD5 ...

  3. 微信小程序request请求的封装

    目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...

  4. 【微信小程序】调用wx.request接口需要注意的问题

    写在前面 之前写了一篇<微信小程序实现各种特效实例>,上次的小程序的项目我负责大部分前端后台接口的对接,然后学长帮我改了一些问题.总的来说,收获了不少吧! 现在项目已经完成,还是要陆陆续续 ...

  5. (一)微信小程序之模拟调用后台接口踩过的坑

    如下图标记的三个点 在调试过程中出现问题,特此记录. 1. 之前在浏览器测试接口习惯省略 http:// ,是因为浏览器默认有一个检测,在你输入的网址前面加http://,如果有就不加. 然而在微信小 ...

  6. 微信小程序之巧妙的封装

    巧妙的封装 暴露一个访问地址xapp.config.js module.exports = { api_host: `https://a.squmo.com/yizu` } 继续引入,加暴露api.c ...

  7. 微信小程序统一服务消息下发接口 公众号和小程序消息都可以在一个接口推送了

    昨天晚上,2018年9月11日,微信官方又更新了一大波的小程序功能.重点我们来谈谈这个功能,微信叫做统一服务消息下发接口. 这个是官方的文档  统一服务消息 · 小程序https://develope ...

  8. 微信小程序支付、小程序支付功能、小程序支付方法、微信小程序支付方法

    相信大家在做小程序的时候不可避免的会碰到支付功能小程序的支付和pc的是有区别的小程序的支付方法为 wx.requestPayment wx.requestPayment({ timeStamp: '' ...

  9. 微信小程序授权登录--PHP后端接口

    由于之前做过公众号的一个开发,所以再开发小程序就没有那么多坑了,在这也记录一下开发过程,以方便后续进行参考. 废话不多说,直接上官方文档,任何使用第三方开发的,不看文档就是耍流氓.小程序开发文档,可以 ...

随机推荐

  1. Oracle 如何删除掉一个用户下的所有对象

    create or replace procedure drop_all as cursor cur_obj is select uo.OBJECT_NAME, uo.OBJECT_TYPE from ...

  2. 关于MySql链接url参数的设置 专题

    报错: Establishing SSL connection without server's identity verification is not recommended. According ...

  3. Qt编程中QDiaog的ESC键(按下Esc键会默认调用reject()方法)

    最近使用QDialog时,按了下Esc键,导致QDialog被关闭,而后续的数据处理出现了问题.原来在QDialog中按下Esc键会默认调用reject()方法而不是closeEvent(QClose ...

  4. INCORRECT PERMISSIONS ON /USR/LIB/PO1KIT-AGENT-HELPER-1(NEEDS TO BE SETUID ROOT)

    INCORRECT PERMISSIONS ON /USR/LIB/PO1KIT-AGENT-HELPER-1(NEEDS TO BE SETUID ROOT) # sudo chmod +s /us ...

  5. WPF DataGrid 的RowDetailsTemplate的使用

    <Window x:Class="DataGridExam.DataGridRowDetailsExam"        xmlns="http://schemas ...

  6. 在Winform窗体中使用WPF控件(附源码)

    原文:在Winform窗体中使用WPF控件(附源码) 今天是礼拜6,下雨,没有外出,闲暇就写一篇博文讲下如何在Winform中使用WPF控件.原有是我在百度上搜索相关信息无果,遂干脆动手自己实现. W ...

  7. LINUX 蓝牙耳机的配置方法

    由于经常使用SKYPE聊天打电话,一直觉得被拴在电脑前面不是很自由,终于在一个周末,一激动买了一个蓝牙耳机.经过几天的努力在Linux/Debian上用了起来,现在就把这个配置过程和大家分享. 第一 ...

  8. 错误代码: 0x800700b7 配置错误:定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节

    操作环境:Windows 8.1  IIS8.5 VS2008 解决方法: 把应用程序池的.Net CLR 版本从4.0修改为2.0即可.如下图所示:

  9. FC红白机游戏列表(维基百科)

    1055个fc游戏列表 日文名 中文译名 英文版名 发行日期 发行商 ドンキーコング 大金刚 Donkey Kong 1983年7月15日 任天堂 ドンキーコングJR. 大金刚Jr. Donkey K ...

  10. win10不用密码直接登陆设置

    点击开始菜单里的[运行],然后输入control userpasswords2 或者 netplwiz ,然后点击确定,如下图所示. 点击后,在用户帐户对话框里可以看到“要使用本计算机,用户必须输入用 ...