更新记录

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

有任何问题,欢迎在评论区提出

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问