云对象替代restful
在云对象之前,restful接口开发,服务器编写接口,客户端调用接口,传输json。有了云对象,服务器编写API,客户端调用API,不再开发传输json的接口。思路更清晰、代码更精简。
例如:
服务器编写abc云对象,该对象有一些方法,客户端js可以import调用abc云对象,使用里面的方法。
//服务器代码
module.exports = {
add(title,context){
if(!title || !content) {
return {
errCode: '..',
errMsg: 'abc标题或内容不可为空'
}
}
return {
errCode:0,
errMsg:'成功'
}
}
}
//客户端js
const abc = uniCloud.importObject('abc')
async function addAbc () {
try {
const res = await abc.add('title demo', 'content demo')
//导入云对象后就可以直接调用该对象的方法了,注意使用异步await
uni.showToast({
title: '创建成功'
})
} catch (e) {
// 符合uniCloud响应体规范
//https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=resformat
//自动抛出此错误
uni.showModal({
title: '失败',
content: e.errMsg,
showCancel: false
})
}
}
——云对象API
云对象,用this挂载内置方法获取上下文,没有云函数的context。
//客户端信息
module.exports = {
add: function() {
const clientInfo = this.getClientInfo()
// clientInfo = {
// clientIP,
// appId,
// deviceId,
// source,
// //... 其他getSystemInfoSync返回值
// }
}
}
//云端信息
module.exports = {
add: function(){
const cloudInfo = this.getCloudInfo()
// cloudInfo = {
// provider,
// spaceId,
// functionName,
// functionType,
// }
}
}
注意:所有_开头的方法都是私有方法,客户端不可访问。也就是客户端调用云对象时不能调用_开头的方法。
目前有3个内置特殊方法:_before、_after、_timing
——云对象的返回值
没有什么特别说的,一点注意的是:js错误对象不是json,直接console.log(e),只能得到被toString()后的errMsg。而不是一个展开的json结构。所以需要分别打印e对象的子属性。
——云对象的多种调用方式
1.客户端调用;2.云对象或云函数内部调用;3.跨服务空间调用;4.定时触发;5.url化;6.云对象多个方法共享逻辑。
——网络安全