云调用
云调用
是云开发提供的基于云函数使用小程序开放接口的能力。若某些接口标明云调用
则表明该接口支持使用云调用
。
云调用与https调用
个人觉得,云调用是https调用的简化版。
使用https API
的时候为了保证安全会需要access_token
,但由于access_token
的特殊机制需要一台中控服务器来统一获取和管理access_token
,这是比较麻烦的。
小程序开发一直追求简单,此时云调用的作用就展现出来了,云调用是基于云函数端的,只要是在从小程序端触发的云函数中发起的云调用都经过微信自动鉴权,可以在登记权限后直接调用如发送模板消息等开放接口。
另外使用https调用需要使用一些第三方http模块,某些时候在http通讯时可能会产生一些稀奇古怪的错误。相比之下,使用官方提供的云调用可能会更加稳定。
使用示例——文本内容安全检查API
0. 准备
- 首先,小程序开发强烈建议根据文档开发。由于小程序的快速更新迭代,教程是有可能落后淘汰的,所以建议根据文档来开发,比如本文使用的文档security.msgSecCheck。
- 因为云调用是基于云函数的,所以理论上需要你开通云开发功能,配置好云开发环境。
- 云调用要求
wx-server-sdk
版本在0.4.0
或以上(默认是最新版latest
,基本不会有问题) - 你的微信小程序开发工具版本要在
1.02.1904090
或以上
1. 配置config.json
在你要调用API的那个云函数的目录下修改config.json
(若没有这个文件需要你手动创建)
基本格式是:
{
"permissions": {
"openapi": [
//这里填你要调用的接口的权限名
//可以填多个,符合json格式即可
]
}
}
例如:
编写好config.json
后,需要右键它选择更新权限配置
。权限更新可能有一定的延迟,等待一会即可。
2. 在云函数中调用接口
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
// 云函数入口函数
exports.main = async (event, context) => {
let content = event.content
let response = {
code: 200,
msg: "评论成功"
}
try{
/**
* await用于等待一个异步任务执行完成的的结果,根据你的业务需要使用
* 调用方法格式:cloud.接口方法 (接口方法会在文档中标明)
* 参数、返回、异常等最好查看文档
*/
const msgSecCheckResult = await cloud.openapi.security.msgSecCheck({
//这里是接口参数部分,不同接口需要不同的参数
content: content
})
console.log(msgSecCheckResult)
} catch (err) {
//这个接口风格比较奇特,若检测内容不合法会抛出异常
//这里用了try-catch其实好像用Promise风格也是可以的
console.log("检测不合法")
response.code = 500
response.msg = "内容不合法"
return response
}
//其它的业务逻辑……
}