小程序封装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 验证码的实例代码(附效果图)
Mar 22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
记一次webpack3升级webpack4的踩坑经历
Jun 12 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
vue-swiper的使用教程
Aug 30 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
JS学习笔记之数组去重实现方法小结
May 29 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
vue设置默认首页的操作
Aug 12 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随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
PHP面向对象精要总结
2014/11/07 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
浅析javascript的return语句
2015/12/15 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
javascript实现文本框标签验证的实例代码
2018/10/14 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
Python初学者常见错误详解
2019/07/02 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
财务副总经理工作职责
2013/11/25 职场文书
教师个人自我鉴定
2014/02/08 职场文书
给学校建议书范文
2014/05/13 职场文书
化工专业自荐书
2014/06/16 职场文书
普通党员对照检查材料
2014/08/28 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
管辖权异议上诉状
2015/05/23 职场文书
党小组推荐意见
2015/06/02 职场文书
在校证明模板
2015/06/17 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
mysql查看表结构的三种方法总结
2022/07/07 MySQL