小程序封装wx.request请求并创建接口管理文件的实现


Posted in Javascript onApril 29, 2019

开发小程序,封装有一个简单易用wx.request请求还是很必要的,可以省去大量的维护成本!闲话不多说,直接撸代码。

流程

  • 创建http.js文件,封装wx.request
  • 创建api.js文件,统一管理所有接口
  • 在index.js中调用接口

创建http.js文件,封装wx.request

在utils中创建http.js文件,封装http,代码如下:

module.exports = {
 http(url, method, params) {
  let token = 'token' // 获取token,自行获取token和签名,token和签名表示每个接口都要发送的数据
  let sign = 'sign' // 获取签名
  let data = {
    token,
    sign
  }
  if(params.data){ // 在这里判断一下data是否存在,params表示前端需要传递的数据,params是一个对象,有三组键值对,data:表示请求要发送的数据,success:成功的回调,fail:失败的回调,这三个字段可缺可无,其余字段会忽略
   for (let key in params.data) { // 在这里判断传过来的参数值为null,就删除这个属性
    if (params.data[key] == null || params.data[key] == 'null') {
     delete params.data[key]
    }
   }
   data = {...data,...params.data}
  }
  wx.request({
   url:'https://www.apiopen.top'+url, // 就是拼接上前缀,此接口域名是开放接口,可访问
   method:method=='post'?'post':'get', // 判断请求类型,除了值等于'post'外,其余值均视作get
   data,
   header: {
    'content-type': 'application/json'
   },
   success(res) {
    params.success&¶ms.success(res.data)
   },
   fail(err) {
    params.fail&¶ms.fail(err)
   }
  })
 }
}

代码很简单,需要说的是在逻辑代码中只需要传递params,而url和method在接口文件中传递,方便统一管理

创建api.js文件,统一管理所有接口

在utils下创建api.js文件,作为接口管理文件,代码如下:

// 在这里面定义所有接口,一个文件管理所有接口,易于维护
import {http} from './http'; // 引入刚刚封装好的http模块,import属于ES6的语法,微信开发者工具必须打开ES6转ES5选项

function femaleNameApi(params){ // 请求随机古诗词接口
 http('/femaleNameApi','get',params) // 接口请求的路由地址以及请求方法在此处传递
}

// 每一个接口定义一个函数,然后暴露出去,供逻辑代码调用

function novelApi(params){ // 小说推荐接口
 http('/novelApi','get',params) 
}

export default { // 暴露接口
 femaleNameApi,
 novelApi
}

用api.js文件统一管理的好处就是,当接口更新后修改很方便,不需要看逻辑代码,也不用关心有几处调用了此接口,直接在app.js中修改响应就行了,接口统一管理是非常有必要的

在index.js中调用接口

调用方式,代码如下

import http from '../utils/api' // 引入api接口管理文件
Page({
 data: {
  femaleList:[]
 },
 onLoad: function () {
  http.femaleNameApi({ // 调用接口,传入参数
   data:{
    page:1
   },
   success:res=>{
    console.log('接口请求成功',res)
    this.setData({
     femaleList:res.data
    })
   },
   fail:err=>{
    console.log(err)
   }
  })
 }
})

参数传入说明:

  • 为了和微信的API接口调用方式看起来一致,故采用了微信API的这种调用方式
  • 传递一个对象,对象有三组键值对,data:表示要发送的数据,success:成功回调,fail:失败回调
  • 三个键值对均可传可不传,其余值会忽略,基本和微信API调用方式一致,减少了强迫症的烦恼

小程序代码片段放在github上了,欢迎issue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
奇妙的js
Sep 24 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
Windows8下搭建Node.js开发环境教程
Sep 03 Javascript
javascript中call apply 与 bind方法详解
Mar 10 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
浅谈jQuery中事情的动态绑定
Feb 12 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
Mar 31 Javascript
详解webpack + react + react-router 如何实现懒加载
Nov 20 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
浅谈Vue中render中的h箭头函数
Nov 07 Javascript
详解JavaScript实现动态的轮播图效果
Apr 29 #Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
Apr 29 #Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 #Javascript
深入浅析Vue 中 ref 的使用
Apr 29 #Javascript
详解微信小程序实现跑马灯效果(附完整代码)
Apr 29 #Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
Apr 29 #Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 #Javascript
You might like
PHP常用函数小技巧
2008/09/11 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
jQuery基础知识小结
2014/12/22 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
WEB开发之注册页面验证码倒计时代码的实现
2016/12/15 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中用sleep()方法操作时间的教程
2015/05/22 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
python获取代码运行时间的实例代码
2018/06/11 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
什么是反射
2012/03/17 面试题
建筑工地质量标语
2014/06/12 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
人事聘任通知
2015/04/21 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技