借老系统重构我准备写个OpenAPI3.1版的API管理工具(附录屏演示)

news2024/9/21 8:08:15

前段时间一直在忙公司老系统重构的方案设计,其中最大的重构点就是前后端分离。为了加快前后端协同开发和对接的工作效率,我决定写一个公司内部使用的OpenAPI3.1版的API管理工具。

文章目录

    • 有现成的工具为啥不用
    • 现有成熟方案
    • 初步成果展示
    • 录屏演示
    • 下一步计划

有现成的工具为啥不用

apiFox这样的API文档集成开发工具,功能强大又繁杂。作为企业使用,比较关注的几个重点:

  1. API的定义规范统一

    大家都遵循一套规范,最好是业界公认的。有了这样的API接口定义规范,自然市面上大部分厂商都会去实现这套规范开发出一些好用的插件和工具。从而面向市面公认规范的开发出来的工具才有普及性以及各种底层工具的支撑。因此选规范,远比选工具重要,这里我们采用业界公认的API设计规范 - Open API Specification(简称oas)

  2. 支持反向生成和部署代码

    这也应该是企业协同开发最关心的:一处维护,到处使用这就要求,基于一套定义,可以反向生成各种主流编码语言的代码,经过相关工具的编译、打包和发布流程,把API调用包和定义包部署起来。实现自己调用自己,左右互搏,那前端妹纸和后端码男就都成了吃瓜群众,再也没有那么多鸡毛蒜皮的羁绊了。都从对接方沦为了看客。

  3. 为软件开发、维护整个生命周期保驾护航,一体化流程

    既然沦为了“看客”,这一点功能是很有必要的。因为好的产品设计的简单,通吃各类人群,咱们的API工具不光开发、测试人员,前线的产品、运维人员都用的溜,由他们发起API变更,再经过审核,实现一键部署。这就要求产品具备人性化的API变更提醒和变更历史追溯,以确保开发人员及时投入“战斗”,仅关注于业务逻辑层的开发,加速软件整个生命周期的良好运转。

现有成熟方案

基于以上几点的考虑,还是决定自研一套企业内API接口文档协同工具,关注核心特性的实现以解放人力和生产力。前面说的业界统一的API定义规范是swagger官方搞出来的Open API Specification,简称oas。原先swagger是做框架层的工具的,提供项目依赖,实现代码注解,进而在运行时产出文档数据来形成文档。这种代码主导文档的方式,一度成为开发人员编码的负担。后来swagger官方反其道而行之,不再受限于工具,自己主导制定了oas规范。有了这套规范,别的厂商来实现相关工具,而它自己也开发出了oas生态的Swagger Hub,实现了天龙人的API一站式管理平台。而它的贡献也惠及平民众生,发布了让开发人员卸下沉重负担的Swagger Codegen代码生成器。据说这里有个小插曲,从该工具3.0发布开始,团队内部对产品开发方向产生分歧,引申出一条新的开发分支,也就是现在用的更多的OpenAPI Generator。另外,集成开发产品行业翘楚JetBrains也推出了基于oas定义所见即所得的Open API插件,让我们的API开发如虎添翼,直接起飞。

初步成果展示

要写一个能得到团队内部认可和被广泛使用的IT产品,绝非一朝一夕。先迈出这一步,就会发现路越走越宽。即便长时间还在山脚下仰望。现在初步完成的成果如下:

在这里插入图片描述

可以基于oas3的最新3.1.0规范扩展出一个定制版本的API生成器,能基于一份扩展的yaml格式的定义文件,来生成较为完美的DTO类和API接口;同时这份定义文件也能被ideaOpenAPI插件所应用以支持离线swagger文档查看和本地API调用和调试。在这个过程中,自己付出很多努力,对最新发布的Swagger Codegen生成器源码做了一个缺陷的修复和功能定制扩展的二次开发。涉及到这些包的源码二开:

在这里插入图片描述

录屏演示

Swagger生成器工具演示

下一步计划

现在的API定义还是写在一个文件中的,随着API接口模块的增多,这个文件将会变得非常臃肿。我们将通用的定义形式进行模型化处理,设计出一套数据库表结构来出存储,第一版先不引入版本的概念,后续慢慢一步步迭代。oas定义文件将按照选定的API模块使用freemarker模板来动态生成,以临时文件的形式,交给生成器执行生成目标代码。

后续将进一步使用element plusUI库来搭建简洁大气的webAPI维护界面,并通过gradle自定义插件的形式完成API制品包的生成和安装发布,以提供给项目通过依赖的形式集成进来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调制是什么,为什么

一、什么是调制、解调? 调制:将信息承载到满足信道要求的高频信号上的过程就是调制。 解调:解调是调制的逆过程,将有用的信息从高频信号中恢复出来的过程就是解调。 二、为什么需要调制? 通信是为了实现“信息”的传…

[240916] X-CMD 发布 v0.4.11:新增 mac 模块,集成 MacOS 实用功能 | 新增 OpenAI o1 系列模型的支持

目录 X-CMD 发布 v0.4.11📃Changelog✨ mac - 集成 MacOS 实用功能✨ openai✨ gh✨ jina✅ 升级指南 X-CMD 发布 v0.4.11 📃Changelog ✨ mac - 集成 MacOS 实用功能 新增 mac 模块,用于集成 MacOS 用户需要的各种实用功能,以…

LabVIEW机械手视觉引导系统

开发了LabVIEW软件和硬件工具开发的高精度机械手视觉引导系统。系统通过高效的视觉识别和精确的机械操作,提升工业自动化领域的生产效率和操作精度。 项目背景: 随着工业自动化的不断发展,对生产效率和精确度的要求也日益增高。传统的机械手…

应用层协议HTTP介绍

一、HTTP协议介绍 HTTP(HyperText Transfer Protocol,超文本传输协议)是一个至关重要的协议。它定义了客户端(如浏览器)与服务器之间如何通信,以交换或传输超文本。 超文本:视频,音…

【多系统萎缩患者必看】科学锻炼秘籍,让生命之树常青

亲爱的小红书朋友们,👋 今天我们要聊一个温暖而坚韧的话题——关于多系统萎缩(MSA)患者的锻炼指南。在这个充满挑战的旅程中,锻炼不仅是身体的锻炼,更是心灵的滋养,是对抗病魔的勇敢姿态&#x…

超级全面的Python功能图谱

Python作为一种高级编程语言,以其简洁清晰的语法、强大的标准库以及活跃的社区支持而受到广泛欢迎。无论是在科学计算、数据分析、Web开发还是机器学习等领域,Python都是首选的语言之一。本文旨在提供一个全面的Python功能图谱,覆盖从基础语法…

遗传算法(GA算法)求解实例---旅行商问题 (TSP)

目录 一、采用GA求解 (TSP)二、 旅行商问题2.1 旅行商问题简介2.2 使用遗传算法解决 TSP2.2.1 遗传算法求解 TSP 的基本步骤 2.3 实际例子:求解 6 个城市的 TSP1. 初始化种群2. 计算适应度3. 选择操作4. 交叉操作5. 变异操作6. 生成新种群7. 迭代与终止 三、 **采用…

用户体验在网站建设中的重要性

用户体验在网站建设中的重要性不言而喻。以下是对其重要性的具体介绍: 提升用户满意度:用户体验的优劣直接关系到用户对网站的满意程度。一个设计良好、易于导航、响应迅速的网站能够让用户在使用过程中感到舒适和愉悦,从而增加用户对网站的…

【JavaEE】初识⽹络原理

目录 一、计算机相互连接的方式 1.1 局域网LAN 1.2 广域网WAN 二、网络通信的基础 1.1 IP地址 1.2 格式 1.3 端口号 三、认识协议 1.1 概念 1.2 五元组: 1.3 协议分层 1.4 OSI七层模型 1.5 TCP/IP五层(或四层)协议 一、计算机相互连…

【计算机网络 - 基础问题】每日 3 题(七)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

合并RAR分卷压缩包

因为文件压缩之后体积仍然过大,大家可能会选择进行分卷压缩,那么rar分卷压缩包之后如何合并成一个压缩包文件呢?今天我们来学习rar分卷压缩包,合并成一个的方法。 最基础的方法就是将分卷压缩包解压出来之后,再将文件…

AttributeError: module ‘numpy‘ has no attribute ‘object‘.

报错: AttributeError: module numpy has no attribute object. np.object was a deprecated alias for the builtin object. To avoid this error in existing code, use object by itself. Doing this will not modify any behavior and is safe. 位置&#xff…

HBase集群环境搭建

HBase集群环境搭建 一、集群规划二、前置条件三、集群搭建3.1 下载并解压3.2 配置环境变量3.3 集群配置1. hbase-env.sh2. hbase-site.xml3. regionservers4. backup-masters 3.4 HDFS客户端配置3.5 安装包分发 四、启动集群4.1 启动ZooKeeper集群4.2 启动Hadoop集群4.3 启动HB…

rtems 5.3 qemu realview_pbx_a9 环境搭建:生成 rtems arm 工具链

前言 rtems 是一款比较优秀的 RTOS,官方网址 https://www.rtems.org/ 当前 rtems 最新发布的版本:rtems-5.3 版本, 下载地址 https://ftp.rtems.org/pub/rtems/releases/5/5.3/ rtems 支持的 平台也是比较多的,当前支持 STM32F4…

差分进化算法(DE算法)求解实例---旅行商问题 (TSP)

目录 一、采用DE求解 TSP二、 旅行商问题2.1 实际例子:求解 6 个城市的 TSP2.2 **求解该问题的代码**2.3 代码运行过程截屏2.4 代码运行结果截屏(后续和其他算法进行对比) 三、 如何修改代码?3.1 减少城市坐标,如下&am…

关系数据库(6,7,8)

目录 除运算 例子 关系演算 元组关系演算语言ALPHA 检索操作 更新操作 插入操作 删除操作 除运算 其中x,y,z是属性组,r对s的除运算得到新的关系p(x),列数减少了,变得只有一列。 例子 当…

103.WEB渗透测试-信息收集-FOFA语法(3)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:102.WEB渗透测试-信息收集-FOFA语法(2) FOFA使用实例 组件框架 …

基于yolov5的混凝土缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的混凝土缺陷检测系统是一项利用深度学习技术,特别是YOLOv5算法,实现对混凝土结构中缺陷进行自动检测和识别的系统。该系统通过收集大量的混凝土图像数据,并标注缺陷区域,如裂缝、空洞、剥落等&#xff0…

Github 2024-09-16 开源项目周报 Top14

根据Github Trendings的统计,本周(2024-09-16统计)共有14个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目2Go项目2JavaScript项目2Shell项目2Rust项目2C++项目2Jupyter Notebook项目1C#项目1React: 用于构建用户界面的JavaS…

中国矿业大学《2023年868+2007年自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《25届中国矿业大学868自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2007年复试真题 2023年初试真题 Part1:完整版真题 2007年复试真题 2…