当前位置: 首页 > news >正文

8年开发经验,浅谈 API 管理

随着信息化飞速增长的还有各信息系统中的应用接口(API),API作为信息系统内部及不同信息系统之间进行数据传输的渠道,其数量随着软件系统的不断庞大而呈指数型增长,如何管理这些API已经在业界变得越来越重要,需要将API 开发的敏捷性、速度和效率提升到了全新的水平。

API管理

很多人认为,API的管理无非是对API信息的管理,只要将API记录在Word或Wiki文档就足够了,这其实是一种想当然的想法。根据实际经验,这些文档随着时间的推移,缺少维护,而逐渐变成了最初工作的凭证而已,已和实际运行的API大相径庭了,已失去了其作为API文档的意义了。

在目前成功的API管理实践中,API管理应该至少包括以下内容:

1)API文档信息管理

2)API测试质量管理

3)API研发流程管理

4)API自动测试管理

只有至少实现了以上四点,才能称之为有效的API管理,API才能更有效地服务于企业,把 API 的开发提高到新的水平。

API管理现状

现有应用系统大多采用前后分离端架构或微服务架构,一般规模的系统至少有上百个API,对于庞大的系统,包含数千个API是很正常的,并且系统内的API不仅数量众多,并且种类各异,分布在不同的地方。目前API管理主要存在以下难点:

1)API信息管理困难

由于系统中拥有纷繁复杂的API,在研发过程中因疏漏无法及时更新API信息的情况时有发生,最后会导致API信息出现缺漏。对于API的开发者和使用者来说,API文档信息逐渐失去参考价值;对于项目管理者来说,API信息无法与测试、项目迭代进度等内容关联起来,无法了解项目的实际研发、测试和运行情况。

2)API研发协作困难

在API管理平台不统一的情况下,每个项目团队都有自己的使用习惯或历史遗留问题,平台不统一导致无法维护和协作。并且由于API变更时没有及时更新文档和通知到相关人员,导致项目检查、后期测试、前后端对接过程中高昂的沟通成本,拖后项目的进展。

3)API测试困难

测试人员需要看着接口文档再另外使用工具进行测试,另外接口发生了变化,需要重新再写测试用例,增加了工作量降低了效率。测试总是排在最后进行,无法参与项目讨论,无法快速大范围回归测试,甚至无法按时完成测试任务,导致项目延期或者忐忑上线。

4)API自动化测试困难

测试人员需要学习编程语言去编写测试脚本,但是测试脚本因更新不及时、编码风格不完善、不方便协作等原因导致使用成本较高,测试报告也不够清晰。

5)API测试管理困难

测试团队以及项目管理人员无法准确了解测试效果,无法通过数据来量化当前项目质量。项目管理人员缺乏一个平台来展示团队开发进度,如完成需求量情况,是否通过测试、对接和发布等信息。

Eolink Apikit 的解决之道

Eolink Apikit 提出针对API开发协作的创新理念——文档与测试驱动开发(DTDD),何为文档与测试驱动开发呢?简而言之:

1)用标准文档代替口头约定和笔记文档,让开发、测试、运维、协作有迹可循;

2)快速用测试结果推动开发进度,让团队沟通更充分、管理有事实依据,实现敏捷开发。

依据这个理念,Eolink提供一套先进的解决方案,目标是降低研发过程中因为API管理导致的效率低下、测试不清、管理困难等问题,通过敏捷的API研发管理方案和理念来推动企业业务的快速发展。

下图所示为  ApiKit 解决方案示意图:

Eolink Apikit 的实战

1.API信息管理

全面的API信息管理模块,通过手动 或自动方式生成API信息,全面记录和展示API信息。 1)设计API:能够详细、规范地记录API的所有信息,可以通过它来设计、统一API的开发规范(如下图所示)。除了手动创建API外,还可以从其他工具或系统导入已经设计好的接口,如Postman、Swagger、Jmeter、Apifox、YApi等。

2)管理API:API信息里面会记录创建人、负责人、最后修改时间等信息,并且可以为API定义Tags,对API进行分类,可以更好地对API进行管理,如下图所示:

除此之外,还可以绑定Github、Gitlab、码云等代码仓库,可以一键自动生成API文档,也兼容Swagger代码注解生成API文档。

2.API测试管理

一键发起测试,拥有专门的测试编辑器可以直接编写JSON、XML数据,还可以支持自动生成测试数据,能够通过Javascript代码对请求参数、放回结果进行二次加工,实现复杂场景的测试。

系统会记录每一次请求的历史,可以看到详细的测试时间、请求及返回信息等,这样保证了测试结果可查并且可追溯。

3.API自动化测试

Eolink实现了零代码实现API自动化测试,能够让测试人员通过界面就可以完成自动化测试,并且提供了Javascript脚本模式,可以通过非常简单的脚本来编写复杂的API测试用例,实现自动化测试中复杂的流程跳转、数据加解密、验签等目的。

4.API研发管理

通过把产品系统的各个研发周期串联起来,可实现产品、开发、测试、运维等各个环节和人员的综合协作。通过Mock API可以实现前后端同时开发,通过API状态统计,可以快速了解到当前项目内所以API的状态分布;除此之外,还可以制定迭代计划并跟踪开发进度,将API绑定到迭代计划上,可以帮助团队将开发进度精确到以API为单位,实现更精确的进度跟踪。

除此之外,还可将API设置为已发布、设计中、待确定、开发、对接、测试、完成、异常、维护发、废弃等状态,可根据每种状态设置状态变更操作,如当API变为测试状态时测试人员,当然,状态发生改变或改变接口本身时,也可以手工选择需要通知的人员。如下图所示,当更新接口状态时,不仅需要更新相关变更信息,而且还可以选择是否触发变更通知。

相关文章:

8年开发经验,浅谈 API 管理

随着信息化飞速增长的还有各信息系统中的应用接口(API),API作为信息系统内部及不同信息系统之间进行数据传输的渠道,其数量随着软件系统的不断庞大而呈指数型增长,如何管理这些API已经在业界变得越来越重要&#xff0c…...

【软考备战·四月模考】希赛网四月模考软件设计师上午题

文章目录 一、成绩报告二、错题总结第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题第十一题第十二题第十三题第十四题第十五题第十六题第十七题第十八题第十九题第二十题第二十一题第二十二题 三、知识查缺 题目及解析来源:2023上半年软考-模考大赛…...

MySQL中的@i:=@i+1用法详解

在MySQL中,i:i1是一个非常有用的表达式,用于在查询中生成一个递增的序列号。它可以帮助我们对结果进行编号,或者在需要连续的数字序列时提供便利。 我们先来了解一下MySQL中的用户变量。用户变量是一个用户定义的变量,其以开头。…...

web安全第一天 ,域名,dns

第一天 什么是域名?域名就是网络地址 在hhtp之后的就是域名 域名在哪里注册呢 国内注册商有很多,在网络上搜索一下阿里云万网就可以注册 什么是二级域名和多级域名 域名通常都是www.开头 ,而www.被称为顶级域名,在搜索的时候…...

【Linux】Linux编辑神器vim的使用

目录 一、Vim的基本概念 二、Vim的基本操作 1、进入vim 2、正常模式切换至插入模式 3、插入模式切换至正常模式 4、正常模式切换至底行模式 5、退出Vim编辑器 三、Vim正常模式命令集 1、移动光标 2、删除文字 3、复制 4、替换 5、撤销 四、Vim底行模式命令集 1、列出行号 2、光…...

vulnhub渗透测试靶场练习1

靶场介绍 靶场名:Medium_socialnetwork 下载地址:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 环境搭建 靶机建议选择VM VirtualBox,我一开始尝试使用VMware时会报错,所以改用VM VirtualBox,攻击机使用…...

Uart,RS232,RS485串口通讯协议学习

目录 定义 UART(通常被称为串口,简单意味着使用广泛,具有普适性) RS232 RS232电平转换 RS485 -Recommended Standard (再推荐标准) 485和232的对比 RS485组网 总结 定义 串口是我们都很熟悉的,尤其是需要串口调试的时候,打印信息插…...

UML中的assembly关系

UML中的assembly关系 1.什么是Assembly关系 在UML(统一建模语言)中,"assembly"(组装)是一种表示组件之间关系的关联关系。组件是系统中可替换和独立的模块,可以通过组装来构建更大的系统。 当一…...

[Python]缓存cachetools与TTLCache简介

文章目录 cachetools缓存策略缓存操作 TTLCache cachetools是一个Python第三方库,提供了多种缓存算法的实现。 cachetools 使用前需要先安装pip install cachetools,说明文档参见https://cachetools.readthedocs.io/en/latest/。 cachetools提供了五种…...

现在的00后,真是卷死了呀,辞职信已经写好了·····

都说00后躺平了,但是有一说一,该卷的还是卷。这不,三月份春招我们公司来了个00后,工作没两年,跳槽到我们公司起薪23K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…...

【wpf】列表类,用相对源时,如何绑定到子项

前言 在之前的一篇文章 :《【wpf】深度解析,Binding是如何寻找数据源的》https://blog.csdn.net/songhuangong123/article/details/126195727#:~:text%E3%80%90wpf%E3%80%91%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%EF%BC%8CBinding%E6%98%AF%E5%A6%82%E4…...

头歌计算机组成原理实验—运算器设计(3)第3关:4位快速加法器设计

第3关:4位快速加法器设计 实验目的 帮助学生掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 视频讲解 实验内容 利用前一步设…...

Java中synchronized的优化

本文介绍为了实现高效并发,虚拟机对 synchronized 做的一系列的锁优化措施 高效并发是从 JDK5 升级到 JDK6 后一项重要的改进项,HotSpot 虚拟机开发团队在 JDK6 这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Ada…...

软件测试技术课程:软件测试流程

软件测试流程如下: 测试计划测试设计测试执行 单元测试集成测试确认测试系统测试验收测试回归测试验证活动 测试计划 测试计划由测试负责人来编写,用于确定各个测试阶段的目标和策略。这个过程将输出测试计划,明确要完成的测试活动&#x…...

【Redis】聊一下缓存双写一致性

缓存虽然可以提高查询数据的的性能,但是在缓存和数据 进行更新的时候 其实会出现数据不一致现象,而这个不一致其实可能会给业务来带一定影响。无论是Redis 分布式缓存还是其他的缓存机制都面临这样的问题。 数据不一致是如何发生? 数据一致…...

Java学习笔记-04

目录 静态成员 mian方法 多态 抽象类 接口 内部类 成员内部类 静态内部类 方法内部类 匿名内部类 静态成员 static关键字可以修饰成员方法,成员变量被static修饰的成员,成员变量就变成了静态变量,成员方法就变成了静态方法static修…...

pubspec.yaml 第三方依赖版本控制

以下是一些常见的版本控制方式: 精确版本号:您可以指定特定的版本号,例如 dependency_name: 1.2.3。这将确保只有指定的版本被安装和使用。 范围约束:您可以使用比较运算符来指定版本范围,例如 dependency_name: ^1.2…...

打印机出现错误0x00000709的原因及解决方法

一般来说,出现错误0x00000709,可能是用户试图设置默认打印机时,系统无法完成操作的错误。这种错误通常发生在Windows 10或Windows 7操作系统上。**驱动人生**分析,其原因可能是以下几种情况: 1、已经设置了另一个打印…...

代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II

目录 491.递增子序列 46.全排列 47.全排列 II 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 代码随想录 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序…...

【Kafka】Kafka监控工具Kafka-eagle简介

Kafka-eagle是一种基于Web的开源管理工具,可以用来监控、管理多个Kafka集群。 下面是使用Docker部署Kafka-eagle的步骤: 下载并安装Docker和Docker Compose。 创建文件夹,例如kafka-eagle,并在其中创建docker-compose.yml文件&a…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...