小程序封装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 面向对象 命名空间
May 13 Javascript
解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)
May 13 Javascript
JS图片无缝滚动(简单利于使用)
Jun 17 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
javascript实现起伏的水波背景效果
May 16 Javascript
js判断复选框是否选中及选中个数的实现代码
May 30 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
Oct 27 Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 Javascript
vue过滤器用法实例分析
Mar 15 Javascript
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
vue 项目软键盘回车触发搜索事件
Sep 09 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 动态多文件上传
2009/01/18 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
2018/04/20 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
JS随机密码生成算法
2019/09/23 Javascript
js实现九宫格抽奖
2020/03/19 Javascript
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
python中多层嵌套列表的拆分方法
2018/07/02 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
班组长岗位职责范本
2014/01/05 职场文书
文明工地标语
2014/06/16 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
讲党性心得体会
2014/09/03 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
高中军训感想
2015/08/07 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers