当前位置:Gxlcms > JavaScript > 小程序封装wx.request请求并创建接口管理文件的实现

小程序封装wx.request请求并创建接口管理文件的实现

时间:2021-07-01 10:21:17 帮助过:1人阅读

开发小程序,封装有一个简单易用wx.request请求还是很必要的,可以省去大量的维护成本!闲话不多说,直接撸代码。

流程

  • 创建http.js文件,封装wx.request
  • 创建api.js文件,统一管理所有接口
  • 在index.js中调用接口

创建http.js文件,封装wx.request

在utils中创建http.js文件,封装http,代码如下:

  1. module.exports = {
  2. http(url, method, params) {
  3. let token = 'token' // 获取token,自行获取token和签名,token和签名表示每个接口都要发送的数据
  4. let sign = 'sign' // 获取签名
  5. let data = {
  6. token,
  7. sign
  8. }
  9. if(params.data){ // 在这里判断一下data是否存在,params表示前端需要传递的数据,params是一个对象,有三组键值对,data:表示请求要发送的数据,success:成功的回调,fail:失败的回调,这三个字段可缺可无,其余字段会忽略
  10. for (let key in params.data) { // 在这里判断传过来的参数值为null,就删除这个属性
  11. if (params.data[key] == null || params.data[key] == 'null') {
  12. delete params.data[key]
  13. }
  14. }
  15. data = {...data,...params.data}
  16. }
  17. wx.request({
  18. url:'https://www.apiopen.top'+url, // 就是拼接上前缀,此接口域名是开放接口,可访问
  19. method:method=='post'?'post':'get', // 判断请求类型,除了值等于'post'外,其余值均视作get
  20. data,
  21. header: {
  22. 'content-type': 'application/json'
  23. },
  24. success(res) {
  25. params.success&¶ms.success(res.data)
  26. },
  27. fail(err) {
  28. params.fail&¶ms.fail(err)
  29. }
  30. })
  31. }
  32. }

代码很简单,需要说的是在逻辑代码中只需要传递params,而url和method在接口文件中传递,方便统一管理

创建api.js文件,统一管理所有接口

在utils下创建api.js文件,作为接口管理文件,代码如下:

  1. // 在这里面定义所有接口,一个文件管理所有接口,易于维护
  2. import {http} from './http'; // 引入刚刚封装好的http模块,import属于ES6的语法,微信开发者工具必须打开ES6转ES5选项
  3. function femaleNameApi(params){ // 请求随机古诗词接口
  4. http('/femaleNameApi','get',params) // 接口请求的路由地址以及请求方法在此处传递
  5. }
  6. // 每一个接口定义一个函数,然后暴露出去,供逻辑代码调用
  7. function novelApi(params){ // 小说推荐接口
  8. http('/novelApi','get',params)
  9. }
  10. export default { // 暴露接口
  11. femaleNameApi,
  12. novelApi
  13. }

用api.js文件统一管理的好处就是,当接口更新后修改很方便,不需要看逻辑代码,也不用关心有几处调用了此接口,直接在app.js中修改响应就行了,接口统一管理是非常有必要的

在index.js中调用接口

调用方式,代码如下

  1. import http from '../utils/api' // 引入api接口管理文件
  2. Page({
  3. data: {
  4. femaleList:[]
  5. },
  6. onLoad: function () {
  7. http.femaleNameApi({ // 调用接口,传入参数
  8. data:{
  9. page:1
  10. },
  11. success:res=>{
  12. console.log('接口请求成功',res)
  13. this.setData({
  14. femaleList:res.data
  15. })
  16. },
  17. fail:err=>{
  18. console.log(err)
  19. }
  20. })
  21. }
  22. })

参数传入说明:

  • 为了和微信的API接口调用方式看起来一致,故采用了微信API的这种调用方式
  • 传递一个对象,对象有三组键值对,data:表示要发送的数据,success:成功回调,fail:失败回调
  • 三个键值对均可传可不传,其余值会忽略,基本和微信API调用方式一致,减少了强迫症的烦恼

小程序代码片段放在github上了,欢迎issue

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

人气教程排行