小程序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 相关文章推荐
js简易namespace管理器 实例代码
Jun 21 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
js实现具有高亮显示效果的多级菜单代码
Sep 01 Javascript
jQuery.deferred对象使用详解
Mar 18 Javascript
深入浅析Extjs中store分组功能的使用方法
Apr 20 Javascript
js a标签点击事件
Mar 30 Javascript
Js实现京东无延迟菜单效果实例(demo)
Jun 02 Javascript
JavaScript实现简单的树形菜单效果
Jun 23 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 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
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
28个JS验证函数收集
2010/03/02 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[50:12]EG vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中处理unchecked未捕获异常实例
2015/01/17 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python根据服务获取端口号的方法
2019/09/25 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
HTML5 Canvas概述
2009/08/26 HTML / CSS
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
社区学习十八大感想
2014/01/22 职场文书
什么是就业协议书
2014/04/17 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015年科协工作总结
2015/05/19 职场文书
股东协议书范本2016
2016/03/21 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
python字符串常规操作大全
2021/05/02 Python