小程序封装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控制回车事件的代码
Feb 20 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
Bootstrap每天必学之轮播(Carousel)插件
Apr 25 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
jquery mobile移动端幻灯片滑动切换效果
Apr 15 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 Javascript
详解AngularJS 过滤器的使用
Jun 02 Javascript
vue实现一个炫酷的日历组件
Oct 08 Javascript
React 实现拖拽功能的示例代码
Jan 06 Javascript
js实现漂亮的星空背景
Nov 01 Javascript
node省市区三级数据性能测评实例分析
Nov 06 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在Web开发领域的优势
2006/10/09 PHP
php重定向的三种方法分享
2012/02/22 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
jquery插件制作 表单验证实现代码
2012/08/17 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
vue 2.0封装model组件的方法
2017/08/03 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python读取指定日期邮件的实例
2019/02/01 Python
python进程和线程用法知识点总结
2019/05/28 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
简单了解django orm中介模型
2019/07/30 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
python实现图像全景拼接
2020/03/27 Python
基于python实现地址和经纬度转换
2020/05/19 Python
利用python 下载bilibili视频
2020/11/13 Python
社区维稳工作方案
2014/06/06 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
公司行政管理制度范本
2015/08/05 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP
python如何将mat文件转为png
2022/07/15 Python