实践[生产] 部署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/项目名/接口全路径
相关推荐
想用offer打牌41 分钟前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅1 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX2 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法3 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端