小程序封装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中的call实现继承
Jan 22 Javascript
jQuery焦点图切换特效插件封装实例
Aug 18 Javascript
gridview生成时如何去掉style属性中的border-collapse
Sep 30 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
Sep 19 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
JS实现的简单下拉框联动功能示例
May 11 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
javascript实现视频弹幕效果(两个版本)
Nov 28 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
详解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
jquery获取多个checkbox的值异步提交给php的方法
2015/06/24 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
到处都是jQuery选择器的年代 不了解它们的性能,行吗
2012/06/18 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
Python线性方程组求解运算示例
2018/01/17 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
Python3离线安装Requests模块问题
2019/10/13 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
简单了解Python读取大文件代码实例
2019/12/18 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
基于HTML5 Canvas 实现商场监控实例详解
2017/11/20 HTML / CSS
护士毕业生自我鉴定
2014/02/08 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
python保存图片的四个常用方法
2022/02/28 Python
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫