微信小程序网络请求wx.request

449 阅读2分钟

微信网络请求的限制

出于安全性考虑,小程序官方对数据接口的请求做出以下限制

  1. 只能请求HTTPS类型接口
  2. 必须将接口的域名添加到信任列表中

配置request

修改request的域名需要注意的点

需求: 假设在自己的小程序中,需要请求https://www.baidu.com/域名下的接口

步骤

  • 登录微信小程序管理后台
  • 开发
  • 开发设置
  • 服务器域名
  • 修改request合法域名

注意事项:

  • 域名只支持https (request/uploadFile/downloadFile) /wss(connectSocket)协议)
  • 域名不能使用IP地址或localhost
  • 域名必须经过ICP备案
  • 服务器域名一个月内可申请5次修改

发起GET请求

调用微信小程序提供的wx.request()方法,可以发起GET数据请求:

wx.request({
  url: 'https://www.xxx.com', // 请求的接口地址,必须基于https协议
  methods: 'GET', // 请求的方式
  data: {
    // 发送到后台的数据
	name: 'jackson',
	age: 22
  },
  success: res => {
	// 请求成功后的回调函数
	console.log(res)
  }
})

发起POST请求

wx.request({
  url: 'https://www.xxx.com', // 请求的接口地址,必须基于https协议
  methods: 'POST', // 请求的方式
  data: {
  	// 发送到后台的数据
	name: 'jackson',
	gender: '男'
  },
  success: res => {
	// 请求成功后的回调函数
	console.log(res)
  }
})

在页面刚加载时候请求数据

在onLoad事件中调用获取数据的函数

/**
* 生命周期函数——监听页面加载
*/
onLoad: function(options) {
  this.getSwiperList()
  this.getGridList()
},

// 获取轮播图数据
getSwiperList() {...
},

// 获取九宫格的数据
getGridList() {...
}

跳过request合法域名的检测

如果后端只提供了http协议接口,暂时未提供https协议接口,此时可以临时开启[开发环境不校验请求域名、TLS 版本及 HTTPS 证书」选项,跳过服务器域名校验。此时在微信开发者工具和手机开始调试模式时,不会进行服务器域名的校验。

注意:在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确。

跨域和AJAX

  • 跨域问题只存在于基于浏览器的 Web 开发中。由于小程序的宿主环境不是浏览器,而是微信客户端,所以小程序中不存在跨域问题

  • AJAX 技术的核心是依赖于浏览器中的 XMLHttpRequest 这个对象,由于 小程序宿主环境是微信客户端,所以小程序中不能叫做 发起 AJAX 请求,而是叫做 发起网络数据请求

参考:juejin.cn/post/702040…