更新记录
1.0.0(2020-11-26) 下载此版本
1.0.0 发布。
平台兼容性
阿里云 | 腾讯云 | 支付宝云 |
---|---|---|
√ | √ | × |
云函数类插件通用教程
使用云函数类插件的前提是:使用HBuilderX 2.9+
简单的云函数路由模式
插件名称:ml-router-fun
作者:ml
更新时间:2020-11-26
主要功能 以及 对开发者的价值
1、实现云函数路由模式
1.1、路由模式不使用任何第三方包,兼容性强,运行稳定
1.2、减少云函数数量,云函数有个数限制(用一个云函数即可实现多个云函数效果)
2、全面支持url化
的云函数请求
快速上手
云函数框架目录结构
.
├── router─────────────────# 正式环境云函数主入口(函数路由器)
│ └── api──────────────# 逻辑层(用于业务逻辑)
│ └── util─────────────────# 工具包
│ └── index.js─────────────# 入口函数
└──
云函数api模板文件示例
const Result = require('../../util/result.js');
const db = uniCloud.database();
const collection = db.collection('user');
module.exports = {
main: async (info) => {
var data = info.data
var token = info.token
//可在这自行实现token校验
try{
var res = await collection.add(data)
return Result.successful(res.id);
}catch(e){
return Result.failure("参数错误,手机号是唯一的。");
}
}
}
成功时返回
return {
code : 200,
msg : '成功' ,
data:null
}
列表没数据返回
return {
code : 300,
msg : '暂无数据' ,
data:null
}
失败时返回
return {
code : 500,
msg : '错误..' ,
data:null
}
定义的返回值 util/result.js
const Result = {
successful: (data) => {
return Result.newResult(200,"成功",data);
},
failure: (msg) => {
if(msg==undefined){
msg = "出错了"
}
return Result.newResult(500,msg,null)
},
emptyList: (msg) => {
if(msg==undefined){
msg = "暂无数据"
}
return Result.newResult(300,msg,null)
},
newResult: (code,msg,data) => {
return {
"code":code,
"msg":msg,
"data":data
};
},
}
前端调用云函数示例
//url化 调用
import api from '@/pages/api/apiModule.js'
api.userAdd(info).then(res=>{
})
//uniCloud 调用
uniCloud.callFunction({
name: 'router',
data: { url: 'user/add',data:{},token:"" }
})
.then(res => {});
前端api模板示例(推荐每个分包写一个 apiModule.js)
class ApiModule{
constructor(){
//集成了 uview-ui,也可以用其它的。
this.http = getApp().$u
this.config = {
baseUrl:"https://9b07447c-12b5-47fd-926d-5f24d2b6de02.bspapp.com/http/router"
}
}
userAdd(data){
var infoPa = this.newApiData("user/add",data)
return this.http.post(this.config.baseUrl,infoPa,this.newApiHeader())
}
userQueryAll(){
var infoPa = this.newApiData("user/queryAll")
return this.http.get(this.config.baseUrl,infoPa,this.newApiHeader())
}
newApiData(url,data){
return {
"url" : url,
"data" : data,
"token" : this.newApiHeader()
}
}
newApiHeader(){
return {
"token":"123Token"
}
}
}
export default new ApiModule