Apinto 网关 V0.14 版本发布,6 大插件更新!


新特性

  1. 新增 额外参数v2 插件,支持对转发参数进行加密、拼接等操作。

该插件为额外参数插件的升级版本,在v1版本中,我们只能设置静态参数转发给上游服务,存在一定的局限性。

在某些场景,如:对参数进行签名、加密等操作,v1版本无法完成。

额外参数 v2 在 v1 版本的基础上,新增了以下功能特性:

  • 支持引用系统变量(如:请求URI、应用名称等),记录客户端请求特性。
  • 支持对参数进行动态处理。如:md5加密、字符串拼接、获取当前请求时间戳和日期等动态操作。

以字符串拼接为例,我们希望通过拼接请求体参数nameversiondriver的方式,生成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. 新增 格式转换 插件,支持JSONXML数据格式互转。

XMLJSON是目前主要的两种数据交换格式。

由于历史原因,一些后端服务系统采用SOAP协议开发,使用XML作为数据通讯格式。

现在大多数行业中的开放 API 都使用JSON格式进行通信。然而,由于后端服务技术过时,无法进行改造。

为了向用户提供更便利的调用方式,我们可以使用格式转换插件来解决JSONXML之间的互转问题。这样,我们就能够通过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


相關推薦

2023-03-22

大家好, Eolink 旗下开源网关 Apinto 本次带来了 Apinto Dashboad V2.0 的版本发布。 Dashboad 需要与 Apinto 主版本一起使用,目前 Dashboad 可兼容 Apinto 0.12.4 以上版本。 👉Apinto  : https://github.com/eolinker/apinto   1、Apinto Dashboad 简介

2023-03-04

Eolink 旗下 Apinto 开源网关再次更新啦~ 一起来看看是否有你期待的功能! 1、协议转换功能上线 之前发布的 Apinto v0.10.0 已经支持了多协议的基本功能,实现多协议支持的一次验证。本次最新版本可以支持 HTTP 与 gRPC、HTTP 与 Dub

2022-08-31

> supportTypes(); } 注册中心 ShenYu的注册中心的目的是将网关的实例暴露出去,以便支持ShenYu的集群功能。可以使用shenyu-nginx项目,也可以对接其他的负载均衡服务。 ShenYu-Nginx:https://github.com/apache/shenyu-nginx 新增 Nacos的支持

2022-11-19

作为开源的云原生 API 网关,Apache APISIX 致力于在性能和使用体验上为开发者和用户们带来更好更优异的表现,帮助企业解决一些关于云原生和微服务技术下遇到的新问题。 在 9 月底,Apache APISIX 发布了 3.0.0-beta 预览版,为用

2023-11-01

api-testing atest 版本发布 v0.0.14 atest 是一款用 Golang 编写的、开源的接口测试工具。 你可以在容器中启动: docker run --network host \ linuxsuren/api-testing:master 或者,直接下载二进制文件后启动: atest server --local-

2022-10-21

的更新日志如下: 设备接入支持子设备。 支持MQTT网关接入。 支持Modbus网关接入,支持Modbus TCP/RTU协议。 支持脚本解析器解析设备端发来的数据。 新增设备插件生成器,支持设备插件快速开发,自定义图表,支持

2023-09-07

RuleGo v0.14.0 (2023/9/6) 新功能 【examples】增加大量使用示例:详情 【标准组件】增加数据库客户端节点组件(dbClient),支持mysql和postgres数据库,可以在规则链通过配置方式对数据库进行增删修改查:使用示例 【扩展组件 

2023-09-20

ok 模式,那么 Grok parser 插件非常有用。 Grok parser 插件的版本涵盖如下: | fluent-plugin-grok-parser | fluentd | ruby | | ------------------------- | ---------- | ------ | | >= 2.0.0 | >= v0.14.0 | >= 2.1 | | < 2.0.0 | >= v0.12.0 | >= 1.9 | 相关 PR:

2024-01-05

PureScript  v0.15.14 发布了。PureScript 是个小巧而强大的静态类型语言,可以编译成 JavaScript。PureScript 主要是由 Haskell 和 PureScript 编写的。 Bug 修复: 修复超大文件的编译内存回归(#4521) 编译超大文件(>12K 行)时,

2022-09-30

中心 Alibaba Nacos 采用2.X 基于GRPC通信高性能 服务网关 SpringCloud Gateway 响应式高性能网关 负载均衡 SpringCloud Loadbalancer 负载均衡处理 RPC远程调用 Apache Dubbo 原生态使用体验、高性能 分布式限流熔断 A

2023-07-25

Apache APISIX 3.4.1 版本现已正式发布,其中包含了针对 JWT 的安全补丁。 修复 升级 lua-resty-jwt 依赖版本 为了解决 APISIX jwt-auth 插件中身份验证绕过的安全风险,将 lua-resty-jwt 的依赖版本从 0.2.4升级到&nbs

2024-06-29

持监听器,参数传递,动态权限 支持多租户 支持互斥网关,并行网关 支持条件表达式,可扩展 支持不同orm框架系统使用,支持不同orm框架和数据库扩展 同时支持spring和solon 兼容java8和java17,理论11也可以 官方提供基

2024-08-02

凹语言是国内 Gopher 发起的纯社区构建的开源国产编程语言项目(没有公司背景、没有任何赞助)。同时凹语言也是国内第一个实现纯浏览器内编译、执行全链路的自研静态类型的编译型通用编程语言。凹语言 v0.14.0 有以下改进:

2023-04-08

的问题。 多 Neuron 对接 Neuron 是运行在各类物联网边缘网关硬件上的工业协议网关软件,可以采集来自繁杂多样工业设备的不同协议类型数据,采集的数据经由 eKuiper 做流式的实时处理,获取更大的价值。eKuiper 一直在持续优化