小程序封装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 相关文章推荐
讨论javascript(一)工厂方式 js面象对象的定义方法
Dec 15 Javascript
javascript发送短信验证码实现代码
Nov 12 Javascript
js实现多图左右切换功能
Aug 04 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
Oct 25 Javascript
Vue响应式原理详解
Apr 18 Javascript
webpack2.0配置postcss-loader的方法
Aug 17 Javascript
vue多种弹框的弹出形式的示例代码
Sep 18 Javascript
JavaScript框架Angular和React深度对比
Nov 20 Javascript
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
Apr 17 Javascript
JS中一些高效的魔法运算符总结
May 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操作符与控制结构代码
2011/12/30 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
php数组键值用法实例分析
2015/02/27 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
jQuery回车实现登录简单实现
2013/08/20 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
[00:32]2018DOTA2亚洲邀请赛VG出场
2018/04/03 DOTA
python文件比较示例分享
2014/01/10 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
Django中的CBV和FBV示例介绍
2018/02/25 Python
Python中的groupby分组功能的实例代码
2018/07/11 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
python如何爬取网页中的文字
2020/07/28 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
采购部部门职责
2013/12/15 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
小学优秀学生评语
2014/12/29 职场文书
自荐信大全
2019/03/21 职场文书
用Python进行栅格数据的分区统计和批量提取
2021/05/27 Python
javascript Number 与 Math对象的介绍
2021/11/17 Javascript