实践[生产] 部署DOCLever + admin用户创建问题解决

我们在日常开发时,为了实现前后端分离开发,会使用接口约定的形式实现前后端分离开发,因为如果不这么做,前端小伙伴的工作是无法顺利展开的。使用swagger是无法满足这种要求的,因此我们决定寻找一款接口管理工具。

从上图可以看出,前端的工作不仅仅是页面的绘制,更费时间的是页面交互逻辑的编写,若接口字段无法预先定义,则会直接影响前端也没交互的开发工作进展,这也是为什么联调时间远大于前端和后端的分离开发时间,因为将复杂度高的开发任务滞后了。

DOCLever是一款优秀的接口管理工具,包括多种形式的数据导入和接口MOCK数据。使用DOCLever的开发流程从原先等接口,变为了约定接口,并确定返回字段,使前后端工作并行开发,前端在开发页面的同时也能直接进行交互开发,对接时如果前后端完全按照DOCLever接口约束开发,是不存在大问题的,虽然多业务流转性的业务无法保证,但也极大提高了前后端的开发效率。

我们看到了引入了DOCLever后 在开发之前多了接口约定的环节。虽然看似多出了一个工作流程,但是该流程却能极大地缩短前后端对接时间。同时也能提高团队的凝聚力,有多少离职是因为前后端对字段的约束存在争议,从而导致冲突,而这种冲突完全是无意义的,工作还得做,有的人越做越不爽,最终导致离职。

针对新的工作方式,我们可以参考以下约定执行:

  1. 前后端阅读当前冲刺所要完成的功能的需求说明书和原型,确定前端需要什么字段,哪些字段用于交互,后端需要存储那些字段,并约定数据结构。(这个过程需要反复多次,使前端同学和后端同学养成提前设计的能力,而不是开发中设计,磨合几次之后该阶段消耗的时间会大幅缩短)。
  2. 接口约定:这个阶段是将上一阶段的成果转化为 格式化的数据,并编写接口类型和结构,前端负责编写mock规则。
  3. 前后端分离开发:前端根据约定的接口mock数据,后端根据接口进行业务开发。
  4. 联调:该阶段只需对接流程即可,保证数据能够正确入库,交互能够正常进行即可。

部署DOCLever

1. 安装mongodb数据库

这里我们直接使用docker-compose进行数据库部署

yml 复制代码
version: '1.0.0'
services:
  mongodb-single:
    container_name: mongodb-single
    image: mongo:7.0-rc-jammy
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin
  mongo-expose:
    image: mongo-express
    container_name: mongo-expose
    restart: always
    ports:
      - 8001:8001
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
      - ME_CONFIG_MONGODB_ADMINPASSWORD=admin
      - ME_CONFIG_MONGODB_SERVER=mongodb

networks:
  default:
    name: mongodb_network

2. 获取DOCLever

我们从github获取DOCLever最新源码

原仓库https://github.com/DOClever/DOClever

但是原仓库无法创建新用户,我对此进行了修复

在 routes/admin.js中修改如下行即可,该错误应该是开发者疏忽导致的

csharp 复制代码
    this.userCreate=async (req,res)=>{
        try
        {
-            let obj=await (this.admin.userCreate());
+            let obj=await (this.admin.userCreate(req.clientParam));
            if(obj)
            {
                util.ok(res,obj,"ok");
            }
            else
            {
                util.ok(res,"ok");
            }

        }
        catch (err)
        {
            util.catch(res,err);
        }
    }

3. 配置

我们可以按照如下形式配置数据库,工作区和端口号

json 复制代码
{
    "db":"mongodb://admin:admin@localhost:27017",
    "filePath":"~/doclever/",
    "port":9988
}

4. 启动

这里我们使用pm2启动即可,命令为pm2 start Server/bin/www

5. 登陆用户,账户密码为DOClever

5. 设置账户和密码

7.新建团队

建立团队后可以邀请团队成员进行合作开发

8. 进入团队后新建项目

9. 建立接口

10.mock规则

less 复制代码
@date 针对String类型,生成当前日期  
@num(min,max) 针对Number类型,生成min到max范围之间的数字,比如@num(1,100)  
@in(val1,val2,...) 针对String,Number类型,生成括号内的某一个值,比如@in(get,post,put,delete)  
@img(width,height) 针对String类型,生成一个图片地址,如果填写@img,那么图片默认就是600x400  
@null 针对String,Number,Boolean,Mixed类型,生成null值  
@arr 针对Mixed类型,生成一个数组,比如@arr([123,45])  
@obj 针对Mixed类型,生成一个对象,比如@obj({"name":"aa"})  
@count(min,max) 针对Array类型,确定生成数组的大小,比如@count(1,10)  
@code 针对String,Number,Boolean,Mixed类型,会执行自定义的代码并返回结果,比如@code(body["aa"])这个就会返回body参数里key为aa的值,有以下几个内置对象:param,query,header,body,global(global里面还有以下几个成员:name,baseurl,path,method)  
如果不是以@字符开头的话 就直接生成你输入的那个值,当类型不匹配的时候会尝试去做类型转换

11.调用mock数据

bash 复制代码
http://localhost:9988/mock/6541dcb748cd9dc31731a681/screen/data
http://localhost:9988/mock/项目名/接口全路径
相关推荐
大鲤余27 分钟前
Rust,删除cargo安装的可执行文件
开发语言·后端·rust
她说彩礼65万35 分钟前
Asp.NET Core Mvc中一个视图怎么设置多个强数据类型
后端·asp.net·mvc
陈随易41 分钟前
农村程序员-关于小孩教育的思考
前端·后端·程序员
云深时现月42 分钟前
jenkins使用cli发行uni-app到h5
前端·uni-app·jenkins
_江南一点雨44 分钟前
SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍
java·spring boot·后端
昨天今天明天好多天1 小时前
【Node.js]
前端·node.js
酸奶代码1 小时前
Spring AOP技术
java·后端·spring
2401_857610031 小时前
深入探索React合成事件(SyntheticEvent):跨浏览器的事件处理利器
前端·javascript·react.js
代码小鑫1 小时前
A034-基于Spring Boot的供应商管理系统的设计与实现
java·开发语言·spring boot·后端·spring·毕业设计
雾散声声慢1 小时前
前端开发中怎么把链接转为二维码并展示?
前端