uniCloud开发api接口服务
首先创建一个云对象:
在创建的云对象的index.Obj.js中进行编码:
const db = uniCloud.database()
module.exports = {
_before: function () { // 通用预处理器
},
async get(){
//demo-user 是云数据中的一个表名
let res = await db.collection("demo-user").limit(2).get()
return res
}
}
开启本地运行,查看效果:开启后会增加一个demoObj.param.js文件
开启运行:
_before预处理
我们如何将参数传递给api接口中呢,需要在_before中处理。传递参数如下:
get({
num: 1
})
获取参数如下:
const db = uniCloud.database()
module.exports = {
_before: function() { // 通用预处理器
// 获取当前参数列表,固定接口形式:this.getParams()
this.params = this.getParams()[0]
},
async get() {
let {
num
} = this.params
let res = await db.collection("demo-user").limit(num).get()
let result = {
errCode:0,
errMsg:"查询成功",
data:res.data
}
return result
}
}
查询结果如下:
_after 后处理:用来再加工处理本次调用方法的返回结果或者抛出的错误
const db = uniCloud.database()
module.exports = {
_before: function() { // 通用预处理器
// 获取当前参数列表,固定接口形式:this.getParams()
this.params = this.getParams()[0]
// 在before内记录开始时间并在this上挂载,以供后续流程使用
this.startTime = Date.now()
},
async get() {
let {
num
} = this.params
let res = await db.collection("demo-user").limit(num).get()
let result = {
errCode: 0,
errMsg: "查询成功",
data: res.data
}
return result
},
_after(error, result) {
if (error) {
throw error // 如果方法抛出错误,也直接抛出不处理
}
result.text = "测试抛出"
result.timeCost = Date.now() - this.startTime
return result
}
}
上述中是在后处理中处理请求时间,请求后返回如下:
通过 HTTP URL 方式访问云对象
将本地没有问题的云对象上传部署:
获取url地址:
后面的路径可以自己配置,用来区分不同接口
然后就是用postman模拟请求:
首先云对象默认是post请求;其次路径后面的“/get”,是跟index.Obj.js中定义的方法一致;然后form-data格式就可以在预处理那获取参数了
JSON格式如何获取:
const db = uniCloud.database()
module.exports = {
_before: function() { // 通用预处理器
// this.getHttpInfo()获取JSON形式的数据
this.param = JSON.parse(this.getHttpInfo().body)
},
async get() {
let {num} = this.param
let res = await db.collection("demo-user").limit(Number(num)).get()
let result = {
errCode: 0,
errMsg: "成功",
data: res.data
}
return result
}
}
云对象调用公共模块:
首先先定义一个公共模块:
module.exports = {
myFun(e){
return `我是${e} 我要学习unicloud`
}
}
然后在云对象中调用:
调用前保证云对象下面有package.json文件,没有就执行npm init -y
生成package.json
文件,然后打开命令行
执行npm install ../common/demo-text
引入demo-text
模块,然后在云对象中引用并使用:
最后postman测试效果: