小程序封装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 相关文章推荐
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
jquery 操作表格实现代码(多种操作打包)
Mar 20 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
Nov 02 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
jQuery实现背景弹性滚动的导航效果
Jun 01 Javascript
javascript简单进制转换实现方法
Nov 24 Javascript
如何使用less实现随机下雪动画详解
Jan 02 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
layui实现把数据表格时间戳转换为时间格式的例子
Sep 12 Javascript
微信小程序实现手指拖动选项排序
Apr 22 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
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP实现的激活用户注册验证邮箱功能示例
2017/06/06 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
JScript的条件编译
2007/05/29 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
node内置调试方法总结
2018/02/22 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
python的Tqdm模块的使用
2018/01/10 Python
python3实现绘制二维点图
2019/12/04 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
婚内房产协议书范本
2014/10/02 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang