小程序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 相关文章推荐
setTimeout和setInterval的区别你真的了解吗?
Mar 31 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
简单谈谈javascript Date类型
Sep 06 Javascript
js读取并解析JSON类型数据的方法
Nov 14 Javascript
js实现文字滚动效果
Mar 03 Javascript
javascript基础知识
Jun 07 Javascript
js设置和获取自定义属性的方法
Oct 20 Javascript
原生JS实现垂直手风琴效果
Feb 19 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
vuex actions异步修改状态的实例详解
Nov 06 Javascript
js实现简单的倒计时
Jan 28 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生成静态文件的多种方法分享
2012/07/17 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
SVG描边动画
2017/02/23 Javascript
jquery中封装函数传递当前元素的方法示例
2017/05/05 jQuery
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
Bootstrap fileinput文件上传预览插件使用详解
2017/05/16 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
详细分析Node.js 模块系统
2020/06/28 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
DVF官方网站:美国时装界尊尚品牌
2017/08/29 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
什么是数组名
2012/05/10 面试题
卫校毕业生个人自我鉴定
2014/04/28 职场文书
促销活动总结怎么写
2014/06/25 职场文书
护理学专业求职信
2014/06/29 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
手术室护士个人总结
2015/02/13 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis
SQL SERVER存储过程用法详解
2022/02/24 SQL Server
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python