实践[生产] 部署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/项目名/接口全路径
相关推荐
2401_857439691 小时前
Spring Boot新闻推荐系统:用户体验优化
spring boot·后端·ux
进击的女IT2 小时前
SpringBoot上传图片实现本地存储以及实现直接上传阿里云OSS
java·spring boot·后端
Мартин.2 小时前
[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入
前端·xss
一 乐3 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
昨天;明天。今天。3 小时前
案例-表白墙简单实现
前端·javascript·css
数云界3 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
风清扬_jd3 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome
安冬的码畜日常3 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
ChinaDragonDreamer3 小时前
Vite:为什么选 Vite
前端
小御姐@stella3 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js