小程序Request的另类用法详解


Posted in Javascript onAugust 09, 2019

前言

小程序中唯一能发送网络请求接口数据的是wx.request接口,当然这个接口存在诸多的限制,例如:10个并发请求限制,https限制(当然在开发阶段是可以关闭此限制),除了wx.request还有其他方法可以实现类型的功能吗?当然是有的,这个思路也源于我之前看到的一篇文章,随便笔记下来

思路

使用云开发来发送网络请求并把数据返回给小程序端。还不了解的云开发的同学请速度移步到官方【云开发】
新建一个http的云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')
const axios = require('axios')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
 const wxContext = cloud.getWXContext()
 const { method, url, data } = event;
 const res = await axios.request({
  method: method,
  url: url,
  data: data
 });
 return { code: 1, data: res.data } || {code: -1, msg: 'error', data: null}
}

小程序端二次封装云函数调用

async http(options = {}) {
  return wx.cloud.callFunction({
    name: 'http',
    data: {
      method: options.method || 'GET',
      url: options.url || '',
      data: options.data || {}
    }
  }).then(res => {
    return res.result
  })
},

小程序端使用

async onLoad() {
  this.http({
   method: 'GET',
   url: 'https://www.baidu.com'
  }).then(res => {
   console.log(res)
  })
 },

总结

这种方法可以很好绕过https的限制,当然这只是提供一个简单的思路,我们可以进一步细一点封装,包括配置header proxy 等等功能,其实原理就是借助云函数做了二次转发,性能上肯定比不上原生的request

注意

async 和 await 语法糖在最新的开发工具中已经实现了,开启增强编译即可使用,具体更新内容请移步官方社区 微信小程序社区

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

Javascript 相关文章推荐
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
javascript禁制后退键(Backspace)实例代码
Nov 15 Javascript
js window.onload 加载多个函数和追加函数详解
Jan 08 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
原生JavaScript编写俄罗斯方块
Mar 30 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
JavaScript+H5实现微信摇一摇功能
May 23 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
layui 实现表格某一列显示图标
Sep 19 Javascript
vue实现侧边栏导航效果
Oct 21 Javascript
js实现树形数据转成扁平数据的方法示例
Feb 27 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 #Javascript
vue中组件通信的八种方式(值得收藏!)
Aug 09 #Javascript
Vue全局loading及错误提示的思路与实现
Aug 09 #Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 #Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
Aug 09 #Javascript
微信小程序如何连接Java后台
Aug 08 #Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 #Javascript
You might like
PHP array 的加法操作代码
2010/07/24 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
Javascript 按位与赋值运算符 (&=)使用介绍
2014/02/04 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
js实现拖拽功能
2017/03/01 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python根据经纬度计算距离示例
2014/02/16 Python
python字典多条件排序方法实例
2014/06/30 Python
python获取当前计算机cpu数量的方法
2015/04/18 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
Python字符串格式化输出代码实例
2019/11/22 Python
电大自我鉴定
2013/10/27 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
大学班级学风建设方案
2014/05/01 职场文书
刑事代理授权委托书
2014/09/17 职场文书
法定代表人授权委托书
2014/09/19 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
临时用工协议书范本
2014/10/29 职场文书
研讨会通知
2015/04/27 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js