背景:
在前一段时间我研究微信小程序的时候,必需访问学校的http服务器上的数据库,但是微信小程序出于安全考虑只支持https(开发过程可以关掉这个安全验证使用http,上线的时候不行),微信又提供云开发,于是我用云函数尝试发起请求 没想到成功了,我就用云函数中转发送http请求 代码如下:
云函数:index.js
const cloud = require('wx-server-sdk')
const mysql = require('mysql2/promise')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
let res;
try {
const connection =await mysql.createConnection({
host :"服务器ip",
database: "数据库名称",
user: "数据库账号",
password: "数据库密码",
port:"端口号一般为3306",
})
context.callbackWaitsForEmptyEventLoop = false
var sql = event.sql;
var params = event.params;
res = await connection.execute(sql,params);
} catch (err) {
console.log("链接错误", err)
return err
}
return {
res,
code:200
}
}
函数调用
let sql = 'sql语句';
let params = [options];
wx.cloud.callFunction({
name:'云函数名称',
data:{
sql:sql,
params:params
},
success: res=>{
},
fail: err =>{
console.log('[云函数] [db-operator] 调用失败',err)
}
})
总结:
这样处理后小程序就能访问http服务器上的数据库,发送http的请求,但是商用的话可能得额外购买云开发的额度。我这里只是用于比赛和测试,所以可能还存在安全问题,请大佬们一起来处理一下