微信小程序
微信小程序中可以通过内置的 wx.cloud.callContainer
方法来访问云托管服务。使用该方法之前,需要确保腾讯云账号和小程序已经完成关联操作。
// 确认已经在 onLaunch 中调用过 wx.cloud.init 初始化环境(任意环境均可,可以填空)
const res = await wx.cloud.callContainer({
config: {
env: "填入云环境ID", // 微信云托管的环境ID
},
path: "/xxx", // 填入业务自定义路径和参数,根目录,就是 /
method: "POST", // 按照自己的业务开发,选择对应的方法
header: {
"X-WX-SERVICE": "xxx", // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
// 其他header参数
},
// dataType:'text', // 默认不填是以JSON形式解析返回结果,若不想让SDK自己解析,可以填text
// 其余参数同 wx.request
});
console.log(res);
如上使用前,需要在小程序 app.js 中,执行 wx.init
,如下代码:
App({
async onLaunch() {
// 使用callContainer前一定要init一下,全局执行一次即可
wx.cloud.init();
// 下面的请求可以在页面任意一处使用
const result = await wx.cloud.callContainer({
config: {
env: "prod-01", // 微信云托管的环境ID
},
path: "/", // 填入业务自定义路径和参数,根目录,就是 /
method: "GET", // 按照自己的业务开发,选择对应的方法
header: {
"X-WX-SERVICE": "xxx", // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称)
},
// dataType:'text', // 默认不填是以JSON形式解析返回结果,若不想让SDK自己解析,可以填text
});
console.log(result);
},
});
小程序中使用 callContainer 访问云托管更多的信息参见:
使用优势(wx.cloud.callContainer VS wx.request)
- 不耗费任何公网流量,前后端通信走内网;
- 天然免疫 DDoS 攻击,仅授权小程序/公众号可访问后端,其他人即便拿到环境 id 和服务名也无法访问;
- 通过微信就近接入节点加速,无视后端服务地域影响,没有跨地域延迟,后端无需多地部署;
- 无需在小程序后台配置「服务器域名」;
- 后端可直接获取用户信息,无需调接口即可以获取 opneid 等。
- 因此,如果云托管服务只有微信小程序/公众号会调用,建议在服务设置中关闭公网访问。