【API生命周期看护】OpenAPI

news/2024/3/29 3:46:42/文章来源:https://blog.csdn.net/lym940928/article/details/130313325

一、接口暴露等级

对于服务而言,接口是整个系统的信息交互渠道,是各个模块相互沟通的桥梁。这里,根据系统模块的划分,以及接口的功能区分,我们一般会将接口分为两种类型:

  • 内部接口(InnerAPI)
  • 开放接口(OpenAPI)

顾名思义,内部接口就是系统模块内部进行数据、信息交互所使用的接口,它们一般功能比较直接、调用方法与形式也较为固定。

而开放接口,则是整个系统对外部用户所提供的、可以直接调用并利用系统功能达成某种目的的接口形式。一般而言,开放接口是整个系统与外部世界沟通的唯一桥梁,是要严格把握规范性、可用性等指标的,但同时由于是其他服务/用户所使用,因此使用方法与逻辑可能会超出预期,也可能出现接口非法调用、超量调用的情况,对于这类开放接口的分析评估以及质量看护就显得尤为重要。

在接口开放性的评估分析上,我们一般有以下三种方法:

  • API设计阶段定义
  • API网关注册
  • 基于调用链层面逆向分析

接下来,笔者会对着三种方法逐一介绍。

二、开放接口评估方法

1、API设计阶段定义

以API FIrst的理念出发,一个接口的具体功能与暴露等级,应该是在规划与定义阶段就已经确认好、并在API设计文档里承载的,这也是最正规、最理想的情况。

因此,基于这一点,我们在业务实践中,会主动去获取API设计平台中,服务所承载的API设计文档数据:一般以yaml的形式进行结构组织。
而对于API设计,通常我们会定义一个以 x为开头的拓展字段,来作为接口某些特殊属性的标记为:例如x-is-open就可以用来记录表示接口是否为开放接口。

这样,通过这种规划设计段定义、API设计平台数据承载、自动数据同步的方式,我们就完成的API开放性信息的获取与维护。

2、API网关注册

在API全生命周期流程中,包含环节:API注册

对于这一环节的详细内容,笔者后续会单独介绍。简单来说,当我们希望接口能够被其他用户或服务所调用时,云服务语境下的主流做法,是将API注册到API网关(API Gateway)上,并授权给对应的服务或用户。

这种集中式管理的模式有很多显而易见的好处:统一授权、调用透明、流量可控、自主熔断等等。当然缺点也是存在的,这里暂且不谈。

简而言之,当一个接口被注册到网关上时,必然就意味着接口在暴露等级上是OpenAPI等级。

3、基于调用链层面逆向分析

首先,很多时候服务的接口会在自身不知情的情况下被其他服务调用,这种情况其实比较常见。这是由于服务接口本身并没有注册到网关,同时也没有做非常详细的白名单限制,从而造成:
可能服务A本身给服务B提供了某个接口的使用,但是服务B发现服务A的另一个接口也比较有用,于是使用了同样的认证方法去直接调用了服务A的这个接口,但服务A此时是不知情的。

同一个服务下的微服务之间调用属于内部接口调用,彼此相互了解、调用行为也有预期,因此一般不会出问题。
但是这种跨服务的接口调用,如果在被调用服务未知情的情况下暴露、调用,这就造成了很多质量与安全隐患:

  1. 首先服务A可能会对该接口做不兼容修改、甚至可能会直接将该接口下线掉,但服务B在不知情的情况下依赖于该接口的业务就会受损。

  2. 更严重的,服务B并不清服务A对于该接口的性能承载极限,当调用量达到一定程度后,服务A可能直接会由于该接口的调用将整个系统拖垮(例如数据库连接数持续维持在极限而挤压其他正常业务)。

因此,在调用链层面,我们会解析接口的调用信息与调用方,判断接口的调用者与被调用者是否属于同一个服务下:

  • 如果是同一服务下、不同微服务之间相互调用,那么我们并不认为接口是属于开放的;
  • 而如果是不同服务间的接口调用,则我们认为该接口是开放接口。

三、小结

API暴露等级是API的一个重要基本属性,在各大云计算公司对外提供服务中,API文档里全部都是规范对外提供的OpenAPI。这些API需要有规范的划分与定义、测试与监控,是服务的门户与核心。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣sql中等篇练习(十三)

力扣sql中等篇练习(十三) 1 每位学生的最高成绩 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 #先找到最大的元素 然后分组即可,不用管某些字段(grade)是不是聚合字段 SELECT e1.student_id,min(e1.course_id) course_id,e1.grade FROM Enrollment…

很不错的一篇文章,值得点赞收藏,带你全面了解MySQL性能调优、错误代码总结和全局参数配置(持续更新中ing)

前言 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系…

leetcode刷题(9)二叉树(3)

各位朋友们,提前祝大家五一劳动节快乐啊!!!今天我为大家分享的是关于leetcode刷题二叉树相关的第三篇我文章,让我们一起来看看吧。 文章目录 1.二叉树的层序遍历题目要求做题思路代码实现 2.从前序与中序遍历序列构造二…

上海亚商投顾:沪指全天震荡微跌 新能源赛道股集体反弹

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 大小指数今日走势分化,沪指探底回升小幅下跌,创业板指盘中涨超2%,午后涨幅有所…

黑盒测试过程中【测试方法】详解5-输入域,输出域,猜错法

在黑盒测试过程中,有9种常用的方法:1.等价类划分 2.边界值分析 3.判定表法 4.正交实验法 5.流程图分析 6.因果图法 7.输入域覆盖法 8.输出域覆盖法 9.猜错法 黑盒测试过程中【测试方法】讲解1-等价类,边界值,判定表_朝一…

无线通信网 - 无线局域网 WLAN(802.11 标准)

文章目录 1 概述2 WLAN2.1 802.11 标准2.2 网络分类2.3 通信技术 3 扩展3.1 移动通信3.2 网工软考真题 1 概述 #mermaid-svg-UcgosJsdJfSTEm0Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-UcgosJsdJfSTEm0Y .err…

AI如何帮助人类进而验证直觉的可靠性?

AI可以通过以下方式帮助人类寻找反例进行否定或寻找特别的架构: 1. 利用机器学习算法进行反例搜索。AI可以训练一个分类器,用于判断某个假设是否成立。通过反复训练和测试,AI可以识别出一些不合理的假设,并帮助人类进行进一步的验…

Windows环境下C++ 安装OpenSSL库 源码编译及使用(VS2019)

参考文章https://blog.csdn.net/xray2/article/details/120497146 之所以多次一举自己写多一篇文章,主要是因为原文内容还是不够详细。而且我安装的时候碰到额外的问题。 1.首先确认一下自己的代码是Win32的还是Win64的,我操作系统是64的,忘…

【SVN】windows SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

材料写作素材:关于“大”排比句40例

1.一轮思想政治“大督查”,一轮政策落实“大检查”,一次非公企业“大走访”,一次问题线索“大起底”,一批典型案例“大曝光”。 2.在重大风险挑战面前豁得出去、顶得上去,在重大困难考验面前迎难而上、敢于胜利&#…

逐浪智能时代,网易数帆“重写”低代码

如今,越来越多行业正驶入数字化转型的深水区,如何彻底释放数据生产力,成为所有企业的一道必答题。 4月25日,“网易数帆低代码业务战略发布会”在线上举行。在发布会上,网易数帆发布了CodeWave智能开发平台&#xff0c…

e签宝,「进化」在2023

精准布局生态化、统一化、智能化、信创化,辅以具体产品落地;加速产业、行业、企业、业务,“四业”互通互联,提高产业数字化渗透率。电子签“群战”时代,e签宝再次进化。 作者|斗斗 出品|产业家 “印章在谁手上&…

h5逻辑_解决h5页面嵌入ios兼容性问题

安全区域 如下图所示~ 蓝色部分为安全区域。处于安全区域内的内容不受圆角、齐刘海、小黑条的影响。 若是将h5页面嵌入app中,就需要进行适配—> 让h5页面展示在安全区域内。 tips: 安全区域是在ios11之后并且是iPhoneX及以上机型才有的。 因此我们只…

Authing 正式发布应用集成网关 - Authing Gateway

2023 年 2月, Authing 推出了身份领域的 PaaS化应用集成网关 - Authing Gateway 。 Authing Gateway 提供将原有应用快速集成到 Authing 身份云产品的能力,在扩充身份认证方式的同时,提高资源的安全性和数据的隐私可靠性。 01.Authing Gatew…

基于信度感知的半监督医学图像分类对比自集成

文章目录 Reliability-Aware Contrastive Self-ensembling for Semi-supervised Medical Image Classification摘要本文方法Reliability-Aware Contrastive Mean TeacherWeight FunctionReliability-Aware Consistency LossReliability-Aware Contrastive LossObjective Functi…

NUMA详解

目录 NUMA简介 NUMA开启与关闭 查看系统是否支持 关闭方法 numactl --hardware介绍 没有安装numactl工具下查看NUMA架构节点数: 查看每个NUMA节点的CPU使用情况: 看每个NUMA节点的内存使用情况: 查看NUMA下指定进程的运行情况 创建…

基于Dokcer安装RabbitMQ

基于Dokcer安装RabbitMQ 一、RabbitMQ介绍 1.1 现存问题 服务调用:两个服务调用时,我们可以通过传统的HTTP方式,让服务A直接去调用服务B的接口,但是这种方式是同步的方式,虽然可以采用SpringBoot提供的Async注解实现…

2023.4.17-4.23 AI行业周刊(第146期):创业要趁早

最近有很多外部拓展培训的需求,联盟的共学课程培训,公司视觉软件的培训,行业课程的培训,每一项培训听起来简单,但是其实都需要大量的时间精力。 前两年也准备过一份《30天入门人工智能》的视频课程,总共31…

【翻译一下官方文档】邂逅uniCloud云函数(基础篇)

我将用图文的形式,把市面上优质的课程加以自己的理解,详细的把:创建一个uniCloud的应用,其中的每一步记录出来,方便大家写项目中,做到哪一步不会了,可以轻松翻看文章进行查阅。(此文…

太为难我了,阿里面试了7轮...

前言 今年的大环境非常差,互联网企业裁员的现象比往年更严重了,可今年刚好是我的第一个“五年计划”截止的时间点,说什么也不能够耽搁了,所以早早准备的跳槽也在疫情好转之后开始进行了。但是,不得不说,这…