API生命周期看护概述

news/2025/2/6 4:06:58/

一、基本概述

API生命周期看护,从本质上来说是一个很宽泛的话题。与API First相比,后者是一种思想,而前者是一种流程与手段。
这里,我们从API数据来源、流程简述以及基本属性这几个维度来做简单叙述。

二、数据来源

首先需要回答一个核心问题:作为元数据的API,其本身的数据来源是什么?
从广义上来说,API数据来源可以分成两种:一类为正向,一类为逆向

1、正向数据

所谓正向,也即从设计阶段而来的API定义数据,从本质上来说,也应当作为正式的API数据、同时也是最理想的API信息收集手段,但实际操作起来却有诸多问题,这里暂且不谈,后续单独讨论。

2、逆向数据

所谓逆向,则是从API实现、运维阶段获取到的相关数据。这里,我们并不关系API是怎么设计、定义、规划的,我们只关注服务自身接口在底层调用时的具体情况,并将这些数据分析、归纳与整合,作为API元数据。

由于API设计流程的僵化与不合理,以及需求分析阶段的粗粒度与随意,一般而言服务并不会对API的设计投入过多的关注,而只关心API的实现与功能、性能和可靠性,因此正向视角很难确保完整性,从而转向逆向视角。

回到数据本身,一般而言,我们使用APM调用链监控手段来对服务现网实际调用情况进行数据收集,这样就能以最纯粹的接口实际使用者视角来对数据进行采集、分析,避免从设计段的”人为定义“视角漏收集、错收集相关接口数据。

三、生命周期流程简述

从流程视角来看,整个流程可以分为:

  • API规划与定义
  • API设计
  • API测试
  • API注册
  • API发布
  • API监控与运维
  • API日落

整体阶段流程较多,每个阶段都需要分门别类仔细探讨,这里不再赘述。

四、API基本属性

对于API本身而言,存在一些基本属性:

1、API组成

对于一个API,如果是基于RESTful准则,那么可以分为urlmethod两个部分。RESTful是另一个很复杂的命题,简单来说,就是一种“面向资源操作”的请求范式,同时也是使用较为广泛的一种模式。

2、API暴露层级

根据API的暴露层级不同,API可以分为OpenAPIInnerAPI
对于OpenAPI而言,我们一般称之为“开放接口”,这类接口可以理解为服务对外的能力暴露,其他用户、服务可以通过遵循一定的规则来订阅、调用这些接口,由此来获得服务本身对外提供的相关数据等能力。
由于这类接口,因此一般而言需要有严格的性能规格与SLA,并且有完善易懂的接口文档与SDK等。

对于InnerAPI而言,顾名思义,是服务自身的私有接口,或叫内部接口,主要是服务自身内部调用,或服务下各个微服务之间相互请求、调用的接口。
这类API数量更多,但由于服务间调用总体调用量、调用方法与参数总体可知可控,因此在要求上并没有OpenAPI苛刻。

针对这一点,笔者会单独再写一篇文章详细说明。

五、小结

正如文章开头所言,API生命周期看护是一个较为宽泛的概念,这其中不仅包含了笔者在业务上的相关实践,同时也涵盖了之前并没有深入探讨的API First理念。

限于篇幅原因,后续笔者会针对整个流程中较为熟悉的内容与业务实践点,分文章进行说明,如有疏漏请多多包涵。


http://www.ppmy.cn/news/52020.html

相关文章

STM32的GPIO重映射配置(解除下载端口的重映射)

在设计一个项目的时候,因为用的是STMF103C8T6,引脚较少,所以把可以用的GPIO都需要用上,但是由于下载的引脚在出生时,被厂家已经配置好了,所以我们得利用软件配置一下,使引脚变成正常的GPIO。 手…

第二类换元法三角代换的万能代换

前置知识:第二类换元法 介绍 由 sin ⁡ x , cos ⁡ x \sin x,\cos x sinx,cosx与常数经过有限次四则运算所得到的表达式称为三角有理式,记作 R ( sin ⁡ x , cos ⁡ x ) R(\sin x,\cos x) R(sinx,cosx)。对它的不定积分 ∫ R ( sin ⁡ x , cos ⁡ x ) …

学习spark笔记

✨ 学习 Spark 和 Scala 一 ​ 🐦Spark 算子 spark常用算子详解(小部分算子使用效果与描述不同) Spark常用的算子以及Scala函数总结 Spark常用Transformations算子(二) Transformation 算子(懒算子):不会提交spark作业&#…

【系统集成项目管理工程师】项目资源管理

💥十大知识领域:项目资源管理 项目资源管理包括以下 4 个过程: 编制项目人力资源计划组建项目团队建设项目团队管理项目团队 一、编制项目人力资源计划 确定与识别项目中的角色、所需技能、分配项目职责和汇报关系,并记录下来形成书面文件&am…

Android Jetpack - Navigation 组件:进行应用程序导航

一. Navigation 组件的介绍 1.1 什么是 Navigation 组件 Navigation 组件是一种 Android Jetpack 库,它可以帮助开发者轻松地实现应用程序中的导航功能。导航组件包含多个类和组件,包括导航图、目的地、导航控制器等,可以帮助我们管理应用程…

C++ [STL-简介]

本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT ​​​​​​​​ 文章目录 前言正文简介关于STL各种版本 STL组件容器迭代器配接器(适配器)算法仿函数空间配置器 STL的重要性学习STL的意义如何学习STL STL的缺陷 最后 前言 STL(standard tem…

提高网络安全性:探索ADAudit Plus的全功能IT安全审计解决方案

网络安全一直是组织和企业需要关注的重要问题之一,因为随着企业数字化的加速和技术的不断发展,网络攻击的威胁也变得越来越严峻。因此,组织和企业需要采取措施保护其信息资产和网络安全。 ADAudit Plus是一种全功能的IT安全审计解决方案&…

【python中的对象存储:堆?栈?】

堆空间和栈空间 堆空间和栈空间是计算机内存中的两个存储区域,主要的区别有以下几点: 分配方式:栈空间中的内存由编译器或解释器自动分配和释放,无需手动干预。堆空间中的内存则需要由程序员手动申请和释放。内存大小&#xff1…