小程序封装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 相关文章推荐
lib.utf.js
Aug 21 Javascript
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
html向js方法传递参数具体实现
Aug 08 Javascript
jquery 简单应用示例总结
Aug 09 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
vue.js 获取当前自定义属性值
Jun 01 Javascript
Vue实战之vue登录验证的实现代码
Oct 31 Javascript
基于vue.js中事件修饰符.self的用法(详解)
Feb 23 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
js实现点击生成随机div
Jan 16 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
一个SQL管理员的web接口
2006/10/09 PHP
php反弹shell实现代码
2009/04/22 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python定时器实例代码
2017/11/01 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
护士自荐信怎么写
2013/10/18 职场文书
行政人员岗位职责
2013/12/08 职场文书
全民健身日活动方案
2014/01/29 职场文书
揭牌仪式主持词
2014/03/19 职场文书
保安公司服务承诺书
2014/05/28 职场文书
第一批党的群众路线教育实践活动总结报告
2014/07/03 职场文书
庆七一晚会主持词
2015/06/30 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang