Dubbo-Api-Docs实现了哪些类似 Swagger的体验呢?
提供一些描述接口信息的简单注解。 在提供者启动时解析注解并缓存解析结果。 在提供者增加几个 Dubbo-Api-Docs 使用的获取接口信息的接口。 在 Dubbo Admin 侧通过 Dubbo 泛化调用实现 Http 方式调用 Dubbo 接口的 网关。 在 Dubbo Admin 侧实现接口信息展示和调用接口功能。 下列情况中的参数直接展示为表单项,其他的展示为 JSON。 方法参数为基础数据类型的 方法参数为一个 Bean,Bena 中属性为基础数据类型的 很少的第三方依赖,甚至大部分都是你项目里本身就使用的。 可以通过 profile 决定是否加载,打包时简单地修改 profile 就能区分生产和测试,甚 至 profile 你本来就使用了。
Swagger 是一个规范和完整的前端框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 规范也逐渐发展成为了 OpenAPI 规范。
Springfox 是一个集成了 Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的一些描述接口的注解自动生成 Swagger 的描述文件,使 Swagger 能够展示并调用接口。
相信很多人都听说和使用过 Swagger 和 Springfox,这里就不再赘述了。
Dubbo-Admin 中有接口测试功能,但是缺少接口描述的文档,所以该测试功能比较适合接口开发人员用于测试接口。而其他人想要使用该功能就必须先通过接口开发者编写的文档或者其他方式,了解清楚接口信息才能使用该功能测试接口。
Dubbo 这边有没有集合文档展示和测试功能,可以不用写文档就能把接口直接给调用方,类似 Swagger/Springfox 的工具呢?
之前做过一些调研,找到一些类似的工具:
有些是基于 Springfox 做的,直接一个文本域放 JSON,与目前 Admin 中的测试功能大同小异。
有些是直接基于 Swagger 的 Java 版 OpenApI 规范生成工具做的,能把一些基础数据类型的简单参数作为表单项展示。
它们都有一个共同点:会把你的提供者变为 Web 项目。当然有些提供者是通过 web 容器加载启动的,甚至也有和 web 工程在一起的,那就无所谓了。
但也有非 web 的提供者,为了文档我得把它变为 web 项目吗?(还要引入一堆 Web 框架的依赖?比如 Spring MVC?)或者说生产环境打包时,删除它的引用和代码里的相关注解? 有没有简单点的方式呢?
OpenAPI 中没有 RPC 的规范,Swagger 是 OpenAPI 的实现,所以也不支持 RPC 相关调用。Springfox 是通过 Swagger 实现的 RESTful API 的工具,而 RESTful 又是基于 Web 的,Dubbo 没法直接使用。我们最终选择了自己实现:
提供一些描述接口信息的简单注解。
在提供者启动时解析注解并缓存解析结果。
在提供者增加几个 Dubbo-Api-Docs 使用的获取接口信息的接口。
在 Dubbo Admin 侧通过 Dubbo 泛化调用实现 Http 方式调用 Dubbo 接口的网关。
在 Dubbo Admin 侧实现接口信息展示和调用接口功能。
下列情况中的参数直接展示为表单项,其他的展示为 JSON。
方法参数为基础数据类型的
方法参数为一个 Bean,Bena 中属性为基础数据类型的
很少的第三方依赖,甚至大部分都是你项目里本身就使用的。
可以通过 profile 决定是否加载,打包时简单地修改 profile 就能区分生产和测试,甚至 profile 你本来就使用了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。