牛啊,全干攻城狮,uni-admin+云开发 = 后台 + 接口

雪天web

共 6618字,需浏览 14分钟

 · 2023-08-18

本文将介绍使用uniCloud实现管理后台和api接口!作为一个前端搬砖的,这个直接让我变成全干攻城狮...

简单说就是创建官方自带的uni-admin后台项目,运行起来在后台添加需要的数据模块,上传数据之后,用云函数操作下数据库,就可以直接导出api接口。这就相当于有后台,可导出接口,只需要添加自己需要的数据模块。

后台管理:

9a4bc68b09c0099ed0b5929b78ec1b54.webp

Api接口 (以下接口都使用uni云开发实现):

cf4b75fd9bc399f3a65b1afaebc4a98e.webp

使用技术:HbuilderX + uniCloud + uni-admin + showdoc

正文

全干开始:以下将从创建项目一步步实现以上的后台和api接口。

uniapp云开发实现后台和api接口

01- 把HbuilderX升级到最新版本

点击顶部菜单栏的 帮助 > 检查更新  升级版本,如遇到一直提示网络问题无法更新的情况,那么就卸载重新下载一次Hbx,重新下载的就是最新版本。如果不是最新版本会遇到各种奇怪的bug(例如无法上传文件等),然后需要登录Hbx。

02- 创建项目 uni-admin

点这个就是官方提供的 后台 ,它包含了很多的东西,基本能满足需求。

71df8cde434c65bfed16c2bb7551e03c.webp

03- 关联云服务

由于这个后台项目创建时默认选择就是阿里云,所以在创建项目的时候就会提示开通云服务,按照步骤点击就行,这里可以选择一个月的阿里云免费额度使用,开好之后,在项目的 uniCloud目录右键 > 关联云服务空间或项目 > 选择刚开通的云服务 > 确认

uniCloud目录右键 > 打开unicloud web控制台   如下图:

e96e0f07433304d64a1bd2fd7a6be323.webp

开通云服务后的web控制台

7f475d7aa909a4726617fc37c934f044.webp

关联云服务之后如上图

04- 上传云函数和数据表

由于项目创建好之后所有的东西都在本地(当然可在本地调试好最后再上传,但我习惯直接上传,避免不必要的问题),要和云服务产生联系,那么就要把这些本地的东西上传到云服务,这里面就需要上传 云函数  数据表,这些东西都是项目默认的云函数和数据表(会把常用的字段都配置好了可直接使用),内置常用的模块(例如banner轮播,news新闻等),这里不管用不用,为了先把项目跑起来,按照步骤上传项目中所有的云函数和数据库。

1.右键cloudfunctions > 上传所有的云函数 公共模块及actions

2.右键database > 初始化数据库(同时会上传)

上传完之后,就可以在web控制台看到上传的云函数和数据表了:

c8e2fbbf4b3353caf5fbe21a9861d9fb.webp

这一步完了之后,切记,关闭Hbx编辑器, 重启一次 ,然后运行项目到浏览器。

05- 运行项目

运行项目可能会需要下载一些模块,等下载好,项目运行起来之后,会提示创建管理员账号,创建之后就可登录,进入后台:

如下图:这是经过删减菜单后的,默认会更多的左菜单

216d49c391fe676e6e5c8435d7ee8fb8.webp

06- 关闭后台一些不需要的东西

系统管理 > 菜单管理 ,点击开关即可关闭暂不需要的东西

ef18598c25eb5e427b6be284ae718d11.webp

到这里,默认的项目已经运行起来了,下面我们开始写自己的模块。

目的:

1.使用这个后台添加自己的菜单(如我的项目>轮播列表),在后台实现列表的增删改查

2 .把列表的增删改查等功能导出Api接口,以供前台调用

07- 创建轮播图列表

到这里,我们开始实现在后台完成一个轮播图列表,实现列表的展示,新增,编辑,删除功能。

第一步: 项目database文件右键  > 新建DB schema > 选择banner表 > 创建

4bf27fe704faa6238ba1115f9d8d8f9d.webp

解释表内容 (选看,暂时与主线关系不大) 关于创建的表内容具体是什么意思,参考这个,具体 查看:

https://uniapp.dcloud.net.cn/uniCloud/schema.html

80e8d19361f4118e8fe31232d19f0dcc.webp

10cc4f4df0cf33c59fcbd975372ed7f5.webp

当然,这个表也可以选择defa ult默认的,里面的字段自己填写,例如我只需要一个名称和时间,那就可以这样写(也就是说这里的字段就是后台页面展示的东西):

      {
  "bsonType": "object",
  "required": [],
  "permission": {
    "read": true,
    "create": false,
    "update": false,
    "delete": false
  },
  "properties": {
    "_id": {
      "description": "ID,系统自动生成"
    },
    "navname":{
      "title": "分类名称",
      "bsonType": "string"
    },
    "times":{
      "bsonType": "timestamp",
      "title": "上传时间"
    }
  }
}

生成效果:

117802a4be8018e835518367a4449350.webp

介绍完毕,这里我们先选用自带的banner表。

第二步: 右键该表文件 > schema2 > 选择uni-admin > 确认 > 注册 > 合并

a42d18e0783112126659e4a94cfd773b.webp

44cf97cad8cc6c56baca28512c9aa27e.webp

3457498d63c4235e359c28764058a8ce.webp

你会发现以上的操作就会在pages目录下自动生成一个同名文件,里面包含了 增加,编辑,列表 页面,而这些页面就是后台需要的。

ed89d27d561aae061403076855bbd343.webp

然后一定要右键上传该表文件:

3a1b130821b270999ad62f15b288af7a.webp

第三步: 后台系统管理>菜单管理>添加一级菜单> 填写信息(一级菜单不填页面Url)

37c917721cba9de9339ea3453c510d3e.webp

5f1d8254b59e7228b218dc5b120d1b88.webp

添加好后是这样的:

4a1bb079408c408548bebec347e70c96.webp

第四步: 点击后面的子菜单>找到自动生成的列表页的路径填写到页面URL里面(在page.json里面找到,注意 前加个/)> 其他的信息就自己看着填下就行

cfc3172be3f85812cbc820d5dfad840b.webp

38bbb88893c0f65ed6b04370937c9940.webp

提交之后是这样的:

efb005d36984e0f02151e046b78baaa1.webp

点击轮播图子菜单,就进入的是轮播列表页,有新增,编辑功能,且都能正常操作:

7ec8f37771239dda8fa5d8ac01a749e3.webp

到这里,后台轮播列表的增删改查已完成,接下来 实现这个轮播图的api接口:

08- 实现轮播图列表api接口

实现将后台数据变成api接口,官方提供云函数URL化,就是通过云函数/云对象获取需要的数据,然后再把云函数/云对象变成api接口。

第一步 :右键cloudfunctions > 新建云函数/云对象 > 选云函数-默认模板-命名为bk-getBanner-api

a2df724821a32f5851247e28f42be785.webp

第二步: 打开这个云函数的index.js 写入下面代码(opendb-banner就是前面创建的轮播图数据表名称),这里是查询所有轮播列表接口

      'use strict';
 const db = uniCloud.database();
 // 接口 == 云函数的详细信息中的域名 + 自定义的名称 + 云函数名称
 exports.main = async (event, context) => {
  let res = await db.collection("opendb- banner").get();
  //返回数据给客户端
  let result = {
    status: 200,
    errMsg: "查询成功",
    data: res.data
  }
  return result
};

第三步: bk-getBanner-api云函数右键 > 上传部署

然后进如web控制台 > 云函数 > 找到刚上传的bk-getBanner-api云函数 > 横向滑动到后面找到 “详情"

f1ff8da7fb3e949f766b929b7c11f733.webp

de924d1386b31af9452b5365fcb1d135.webp

第四步: 点击下图所示的编辑按钮 > 输入一个自定义名称(这里就写/getBanner,前一定带 /)

146e3edda2bd0484953cc92f3211a07b.webp

第五步: 点击按钮,复制路径,此路径就是接口地址

ee09b74b6677a3c718bf3edc78654088.webp

第六步: 测试接口

88148e4011f97d5accee64aa093fad5a.webp

到此 ,基本流程已完成。现在有后台管理,有api接口,对于前端开发者来说就可以开干了


有参数的接口: 带参数的接口如何写云函数代码?

如:查询列表的时候传入条数num,云函数中接收并使用num查询指定条数

      'use strict';
const db = uniCloud.database();
// 接口 == 云函数的详细信息中的域名 + 自定义的名称 + 云函数名称
exports.main = async (event, context) => {
  //event为客户端上传的参数
  console.log('event : ', event)
  if(event.body){
    let num = JSON.parse(event.body);
    // 这里的body拿到的是参数的对象 并且是字符串的 所以先要格式化 再点出来才能用
    let nums = num.num;
    let res = await db.collection("opendb-banner").limit(nums).get();
    //返回数据给客户端
    let result = {
      status: 200,
      errMsg: "查询成功",
      data: res.data
    }
    return result
  }else{
    let res = await db.collection("opendb-banner").get();
    //返回数据给客户端
    let result = {
      status: 200,
      errMsg: "查询成功",
      data: res.data
    }
    return result
  }
};

前端调用接口

      getBanner() {
  uni.request({
      url: "https://fc-mp-8e004cea-1a93-4915-9a46-3c71ae42ff5a.next.bspapp.com/getBanner",
      method: 'POST',
      data: {
          num:2
      },
      success: (res) => {
         console.log(res);
      }
    })
  },

fe997cf446294e18207ade5f8d1da58f.webp

6698bda8dd3796a96cb15de7e7ba68c8.webp

更多 其他的接口流程同上,如写一个博客列表api,和上面一样,一个接口对应一个云函数,步骤为:

创建数据表>schema2生成页面>上传部署>后台添加菜单>新建云函数>写关于查询博客列表代码>控制台云函数列表找到该云函数>详情>命名>复制地址>测试地址>完成

除了查询列表之外其他接口区别就在于云函数里面的代码逻辑了,关于云函数如何对数据增删改查,条件查询,联查等查看官网。

END- showdoc使用:

最后记录一下showdoc的用 法,写完接口之后,为了更方便查阅,需要一个接口文档,这里选用showdoc,没别的原因,就是简单:

1 . 搜索进入官网,注册-登录,然后新建项目:

8d594487b70cfa1b5b196908c2ab1294.webp

2 . 进入项目,点击加号,添加标题,选择api接口模板:

287f9635cd694a547f5894f031520fb4.webp

76fab6db844b030b1b172a7e0d18ec86.webp

3 . 然后就是按模板修改即可

d503b65544d3e78e3c00c86b95798e06.webp

修改保存后,就有那味了:

7f70afa7d8c814526fd20653cd600731.webp

0bc0fc8f000841da523a984a496760db.webp都看到这里了,动动发财的手点个 吧!

浏览 164
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报