Apinto 网关 V0.14 版本发布,6 大插件更新!
新特性
- 新增 额外参数v2 插件,支持对转发参数进行加密、拼接等操作。
该插件为额外参数插件的升级版本,在v1版本中,我们只能设置静态参数转发给上游服务,存在一定的局限性。
在某些场景,如:对参数进行签名、加密等操作,v1版本无法完成。
额外参数 v2 在 v1 版本的基础上,新增了以下功能特性:
- 支持引用系统变量(如:请求URI、应用名称等),记录客户端请求特性。
- 支持对参数进行动态处理。如:md5加密、字符串拼接、获取当前请求时间戳和日期等动态操作。
以字符串拼接为例,我们希望通过拼接请求体参数name
、version
、driver
的方式,生成x-apispace-token
头部,插件配置如下:
{ "params": [ { "name": "x-apinto-token", "position": "header", "type": "$concat", "value": [ "{name}", "{version}", "{driver}" ] } ], "request_body_type": "json" }
客户端请求体内容如下:
{ "name":"apinto", "version":"v1", "driver":"http" }
经过 Apinto 转发,后端服务收到的请求头x-apinto-token
为:
apintov1http
2. 新增 次数扣减 插件,可根据不同用户配置计数扣减,对API调用进行计数限制。
假设你经营一家超市,每个顾客购物时需要使用购物袋。为了管理超市的容量和资源,你设置了每个顾客最多可以使用的购物袋数量。这个限制就类似于次数扣减,在 API 网关中,每个请求都会消耗一定的次数。
超市代表 API 网关,顾客代表发起 API 请求的客户端,购物袋代表可用的请求配额。次数扣减确保 API 请求的数量保持在可接受的限制范围内,防止过载,并确保资源的公平分配,就像超市限制购物袋数量一样,防止过度使用。
当可用次数用完时,可以通过购买额外的请求次数或根据特定条件自动充值来增加可用的请求配额。
Apinto 网关支持以下两种次数扣减方式:
- 对单一请求进行单次计数:每成功转发一次,计数为1次。
- 对单一请求进行批量计数:可配置参数拆分规则,如短信接口,参数
phone
允许输入多个手机号码,此时根据批量扣次的规则,计数为手机号码个数。
次数扣减架构图如上,该插件依赖 Redis 集群进行次数扣减同步,在配置该插件前,需要部署好 Redis 集群并在 Apinto 控制台配置并发布 Redis 配置,如下图:
3. 新增 参数校验 插件,拦截无效请求。
该插件支持校验请求体 、请求头部 、Query 参数 的有效性和合法性,过滤/拦截无效请求。在进行参数校验时,支持正则表达式校验、前缀校验、后缀校验、包含校验、全等校验、为空校验等多种校验方式。
参数校验插件执行简化流程图如下,该图省略路由匹配、剩余插件执行等操作。
4. 新增 请求体校验 插件,限制请求体大小。
当客户端向服务器发送请求时,请求体中可能包含大量的数据,如文件上传、表单提交等。如果没有对请求体大小进行限制,那么客户端可以发送非常大的请求体,这可能导致网络拥塞,影响其他用户的访问速度和体验;其次,处理大量的请求体数据会消耗服务器的计算和存储资源,降低服务器的性能和响应速度。
同时,恶意用户可能利用大请求体来进行拒绝服务(Denial of Service)攻击,通过消耗服务器资源来使其无法正常工作。因此,通过限制请求体大小,可以有效地控制网络流量、保护服务器资源和防止潜在的安全威胁。
5. 新增 格式转换 插件,支持JSON
与XML
数据格式互转。
XML
和JSON
是目前主要的两种数据交换格式。
由于历史原因,一些后端服务系统采用SOAP
协议开发,使用XML
作为数据通讯格式。
现在大多数行业中的开放 API 都使用JSON
格式进行通信。然而,由于后端服务技术过时,无法进行改造。
为了向用户提供更便利的调用方式,我们可以使用格式转换插件来解决JSON
和XML
之间的互转问题。这样,我们就能够通过JSON
格式开放给用户调用,同时与后端服务系统进行无缝交互。
当客户端请求体为JSON
时,经过 Apinto 网关后,将会将数据转换成XML
发送给后端服务;接收到后端服务返回的XML
后,Apinto 将会把该内容转成JSON
返回给客户端,如下图所示:
同理,当客户端请求体为XML
时,也会自动转换成JSON
发送给后端服务。
6. 新增 响应体重写v2 插件。
当匹配响应状态码、响应体、响应头部后,重写响应信息。不仅支持对上游服务返回的响应进行重写,而且支持对插件报错设置的默认响应进行重写。
对上游服务返回的响应流程图如下:
建议将该插件执行顺序尽量靠前,如下图:
写在最后
目前 Apinto 及其周边项目已经开源,我们希望通过 Apinto 强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展 Apinto 的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:
·查找 bugs,取得性能上的提升
·帮助完善文档,提供用户操作体验
·提交你们的 issue,让我们知道您的奇思妙想
·参与自定义插件的开发,丰富 Apinto 的能力
...
欢迎各位开源爱好者参与到 Apinto 项目中,和我们一起为开源事业贡献自己的力量!
Apinto GitHub :https://github.com/eolinker/apinto

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
解锁 AI,openKylin 智能交互新体验
近年来,人工智能技术取得显著进展,不断涌现出更成熟、更强大的AI产品,并且这些产品正逐渐应用到各行各业的创新发展中来。尤其在桌面操作系统领域,AI技术的深度融合将有机会重新定义人机交互方式。因此,openKylin社区积极拥抱创新,从智能输入、智能输出两方面入手,尝试探索桌面操作系统未来智能交互的发展方向。 PART 1语音助手 openKylin语音助手是一款支持语音指令的智能语音软件,用户可通过语音下达指令,无须键盘输入,即可触发应用功能。 openKylin语音助手服务端采用开源模型库paddlespeech作为语音识别服务,将客户端上传的流式语音进行识别并且返回给客户端;客户端采用Qt的Multimedia模块进行语音识别,然后进行格式封装上传到服务端,根据识别结果处理对应操作。 目前,在openKylin 1.0版本上已实现的主要功能有: 识别用户的语音输入; 支持快速打开应用。 后续我们会进一步开发,让语音助手能够拥有上下文,并计划扩展更多使用场景,包括: 语音搜索:通过语音输入方式快速帮助用户使用全局搜索; 天气查询:通过语音输入方式快速帮助用户查看天气状况; 语音翻译...
- 下一篇
PHP 8.3 RC1
PHP 8.3 发布了首个 RC。按照发布计划,RC 阶段会有 6 个版本更新,然后在 11 月 23 日发布最终正式 GA。 PHP 8.3 引入了许多新特性,同时也弃用了不少功能,以及其他变更。 8.3 主要新特性 类型化的类常量 (Typed Class Constants) 支持获取动态的类常量 (dynamic class constant) 和枚举成员 (Enum member) 新增json_validate()函数,用于验证 JSON 添加 Random 扩展 添加mb_str_pad() 添加#[\Override]属性 新增更多 PHP Sockets 选项 增加对 cURL 7.87 及以下版本的新 cURL 选项和常量的支持 支持匿名只读类 (anonymous read-only classes) 支持在数组中使用负数索引 (negative indices) 点此查看 PHP 8.3 具体变化。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16