# dubboDoc **Repository Path**: beyondwxf/dubboDoc ## Basic Information - **Project Name**: dubboDoc - **Description**: Dubbo interface documents, test tools, generate documents according to annotations, and provide test functions. Dubbo 接口文档工具,根据注解生成文档,并提供测试功能. 镜像自:https://github.com/KeRan213539/dubboDoc - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://github.com/KeRan213539/dubboDoc - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-05-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dubboDoc [English](./README.md) [Gitee镜像](https://gitee.com/213539/dubboDoc) dubbo 接口文档、测试工具,根据注解生成文档,并提供测试功能. 功能参考 swagger+springfox, 只需要加一些注解就能生成类似swagger的文档, 不会把非web的dubbo项目变为web项目. 欢迎大家吐槽~ 目前第一版功能比较粗糙(界面也粗糙),用户体验不是很好,后面会慢慢优化,也欢迎各种PR~ ``` 在测试dubbo提供者的时候,一直在想如果dubbo有一个类似swagger的文档+测试工具就好了. 也找了一下,找到的几个都是基于springfox的,会在dubbo项目中加一些restful接口, 如果你的dubbo服务本身就是通过web容器启动或者混合有web项目那还好. 但是我这边的dubbo项目都是非web项目,对于有强迫症的我来说,为了文档要把项目变成web项目有点无法接受,就有了自己动手的想法... ``` ## 版本规划 ### 第一版 * 解析注解并生成界面 * 不太友好的使用界面(没有处理一些异常) ### 第二版 * 放json的文本域找一个合适的json编辑器替换,校验json格式 * 增加标签页 * 能保存测试,方便下次直接加载测试 * 部分异常处理为友好的文字提示 * 增加 remark.md 并在前端展示 * 增加 changelog.md 并在前端展示 ### 后续版本 * 根据自用产生的需求和issue规划 * 根据dubbo升级情况规划 ## 注册中心支持 * 理论上dubbo支持的所有注册中心都支持 ## 如何使用? 1. dubbo项目的方法参数中加上 dubbo doc注解 * dubbo提供者项目引入 dubbo-doc-core * 如果dubbo的接口和参数是一个单独的jar包项目,引入dubbo-doc-annotations ``` top.klw8.alita.dubbodoc dubbo-doc-annotations 1.0.1 top.klw8.alita.dubbodoc dubbo-doc-core 1.0.1 ``` 2.下载 dubbo-doc-ui-server [下载地址](https://github.com/KeRan213539/dubboDoc/releases) [国内用户可到码云下载](https://gitee.com/213539/dubboDoc/releases) 3. 启动 dubbo-doc-ui-server 4. 访问: http:// localhost:8888 * application.yml 中可以修改端口 * swagger-ui http:// localhost:8888/swagger-ui.html ### 注解使用 * @DubboApiModule 类注解: dubbo接口模块信息,用于标注一个接口类模块的用途 * value: 模块名称 * apiInterface: 提供者实现的接口 * version: 模块版本 * @DubboApi 方法注解: dubbo 接口信息,用于标注一个接口的用途 * value: 接口名称 * description: 接口描述(可使用html标签) * version: 接口版本 * responseClassDescription: 响应的数据的描述 * @RequestParam 类属性/方法参数注解:标注请求参数 * value: 参数名 * required: 是否必传参数 * description: 参数描述 * example: 参数示例 * defaultValue: 参数默认值 * allowableValues: 允许的值,设置该属性后界面上将对参数生成下拉列表 * 注:使用该属性后将生成下拉选择框 * boolean 类型的参数不用设置该属性,将默认生成 true/false 的下拉列表 * 枚举类型的参数会自动生成下拉列表,如果不想开放全部的枚举值,可以单独设置此属性. * @ResponseProperty 类属性注解: 标注响应参数 * value: 参数名 * example: 示例 ### dubbo-doc-ui * 获取接口列表直连: 由于可能不同功能的dubbo服务都会注册到同一个注册中心,但是dubbo doc 使用的接口名是一样的,所以dubbo doc的接口采用直连方式以获取到不同功能服务的不同接口列表 * 测试可以直连或者走注册中心 ### swagger-ui TODO ### 使用注意 * 响应bean(接口的返回类型)支持自定义泛型, 但只支持一个泛型占位符 * 关于Map的使用:Map的key只能用基本数据类型.如果Map的key不是基础数据类型,生成的 就不是标准json格式,会出异常 * 接口的同步/异步取自 org.apache.dubbo.config.annotation.Service.async ## 项目结构 * dubbo-doc-annotations: 文档生成辅助注解项目 * dubbo-doc-core: 负责注解解析,文档信息获取接口(dubbo接口) * dubbo-doc-ui-server: web服务,负责展示doc,并提供测试功能 * dubbo-doc-console: 前端项目, 发布时会打包到 dubbo-doc-ui-server 项目中 * dubbo-doc-examples: 使用示例 * readmeImgs: README.md 用到的图片 ## 主要依赖版本 * spring-boot: 2.1.12.RELEASE * dubbo: apache dubbo 2.7.5 * 前端使用飞冰(iceworks 4.0) ## Dubbo Doc 做了什么? ### 注解 * 定义一些注解用于描述接口和参数的注解 ### 在需要生成文档和测试的 dubbo 项目中 * 解析注解并缓存 * 增加dubbo doc使用的获取接口信息的 dubbo 接口 ### dubbo-doc-ui-server * web服务 * 前端ui使用的获取接口信息的 web 接口(接口列表, 指定接口的信息) * 请求 dubbo 服务的web接口(使用 dubbo 泛化调用的方式) * 保存测试,并可在下次展现(第二版实现) ### dubbo-doc-console(发布时打包到 dubbo-doc-ui-server 中) * 根据指定的dubbo服务IP和端口获取接口列表并展示(直连dubbo服务) * 根据指定的接口获取接口信息并生成带doc的表单(类似swagger) * 展示接口请求的响应 ![界面](https://github.com/KeRan213539/dubboDoc/blob/develop/readmeImgs/DubboDoc.png)