小程序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 相关文章推荐
jquery 必填项判断表单是否为空的方法
Sep 14 Javascript
javaScript同意等待代码实现心得
Jan 01 Javascript
js取模(求余数)隔行变色
May 15 Javascript
使用jQuery设置disabled属性与移除disabled属性
Aug 21 Javascript
全面理解闭包机制
Jul 11 Javascript
jQuery中常用动画效果函数(日常整理)
Sep 17 Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
Dec 20 Javascript
微信小程序实战之自定义模态弹窗(8)
Apr 18 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
Jun 14 Javascript
JS监听Esc 键触发事键
Apr 14 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 递归效率分析
2009/11/24 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
js局部刷新页面时间具体实现
2013/07/04 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
python中assert用法实例分析
2015/04/30 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
python根据文本生成词云图代码实例
2019/11/15 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
Java基础类库面试题
2013/09/04 面试题
公司业务主管岗位职责
2013/12/07 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
租赁意向书范本
2014/04/01 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
公司经营目标责任书
2015/01/29 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
从结婚开始的恋爱故事。小说《我的美好婚事》TV动画化决定
2022/04/07 日漫