小程序封装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 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
用jscript实现列出安装的软件列表
Jun 18 Javascript
让人期待的2011年度最佳 jQuery 插件分享
Mar 16 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
Apr 10 Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
Nov 25 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
如何编写jquery插件
Mar 29 jQuery
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
JavaScript代码调试方法实例小结
Jan 05 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 Javascript
vue router 组件的高级应用实例代码
Apr 08 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
javascript中的prototype属性实例分析说明
2010/08/09 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
2014/01/27 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
详解Python import方法引入模块的实例
2017/08/02 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
简单了解Django ContentType内置组件
2019/07/23 Python
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
中学运动会广播稿
2014/01/19 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
三方协议书范本
2014/04/22 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
工程承包协议书
2014/10/20 职场文书
廉政承诺书
2015/01/19 职场文书
个人维稳承诺书
2015/05/04 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
MySQL创建管理KEY分区
2022/04/13 MySQL