![](http://data.eolinker.com/course/zuebqql9e7152d280d88ee1bfc936abb5ce7cefd2aae479.png)
新特性
![](http://data.eolinker.com/course/h8TAjnAeedd59de2e2090f265c61f61b3e8c1dc09ad1f4b.png)
该插件支持对后端服务返回的响应信息进行过滤,包括响应头部、响应体。过滤的响应体字段或响应头将会被移除,不会返回给客户端,从而避免敏感信息的泄漏。
若此时上游服务返回的响应体为:
{
"code":0,
"data":{
"valid":true,
"scoreMsg":"系统判断为同一人",
"score":0.81,
"score2":0.81,
"incorrect":100,
"message":"比对成功",
"requestId":"d022123ca86945fbb6562a8c90a416f1"
},
"message":"success"
}
使用响应过滤插件过滤响应体字段$.data.requestId
,此时配置为:
{
"body_filter":[
"$.data.requestId"
],
"header_filter":[
]
}
返回客户端的响应体为:
{
"code":0,
"data":{
"valid":true,
"scoreMsg":"系统判断为同一人",
"score":0.81,
"score2":0.81,
"incorrect":100,
"message":"比对成功"
},
"message":"success"
}
![](http://data.eolinker.com/course/NTxhJdL62d7016c98f074c938130ccecaaba360f55ab5af.png)
当API绑定该插件,请求将不会发送给上游服务,直接返回插件配置的响应内容。
该插件可以适用于以下场景:
在系统升级过程中中可以使用该插件返回特定静态响应内容;
返回静态文件内容,如 HTML 页面、JS 脚本等,减少与后端服务的交互;
API 或页面地址发生迁移,通过该插件将请求重定向到新 API 或新页面;
……
该插件支持引用系统变量,引用格式为:$系统变量字段
,如$request_uri
示例插件配置如下:
{
"body":"",
"content_type":"application/json",
"headers":[
{
"key":"location",
"value":[
"https://www.baidu.com",
"$request_uri"
]
}
],
"status":302
}
若此时请求 API:http://节点IP:端口号/user/info?name=apinto
,插件对该请求拦截后,返回的响应头部中的Location
字段值为https://www.baidu.com/user/info?name=apinto
,响应状态码为302
![](http://data.eolinker.com/course/jq7DjAP591146af2acc3efe4656b51d545a2e9cecae01ae.png)
解析客户端请求上传的文件信息,提取文件请求中的文件后缀、文件大小等信息,将其设置为系统变量,供后续插件使用。
该插件仅支持解析 POST
、PUT
、PATCH
请求方式中的文件参数,并且请求头部 Content-Type
应包含 multipart/form-data
,否则将不会解析文件参数。
插件执行成功后,将会设置以下系统变量:
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/WEBZkoInD931bcfWMlM5RC8BAGK2Jw2aQBkIGSLbnXa0JcVyL251d7jGx3DwNuQ9al9OIQs8Iuum7YPpdZLibWw/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)
系统变量可用于填写日志 Formatter 配置,使用方法请参考 Formatter 教程。
![](http://data.eolinker.com/course/QgrXXQD8f8e2767258fb0cf42f984bc940f2c9850008e09.png)
解析后端服务返回的文件信息,提取文件请求中的文件后缀、文件大小等信息,将其设置为系统变量,供后续插件使用。
文件响应时应设置 Content-Disposition
响应头部,否则将不会解析文件参数。
插件执行成功后,将会设置以下系统变量:
![图片](https://mmbiz.qpic.cn/sz_mmbiz_png/WEBZkoInD931bcfWMlM5RC8BAGK2Jw2aibJZLXIrYPudzMZAGp0W0080dFma3SnVVsnvlojVWJYGEibcPMUJWKww/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)
系统变量可用于填写日志 Formatter 配置,使用方法请参考 Formatter 教程。
Bug 修复
修复 Nacos 服务发现删除后,Apinto连接未断开的问题。
修复计数插件 Redis 模式下死锁的问题。
修复 Prometheus 拉取 Apinto 的 Metrics 时,返回数据格式错误导致读取失败的问题。
修复额外参数 v2 插件表单参数提交失败的问题。
![](http://data.eolinker.com/course/SmTGUbPbe4e727ebe1455e80f73fb8d9e1066bb537b538c.png)
目前 Apinto 及其周边项目已经开源,我们希望通过 Apinto 强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展 Apinto 的插件,以满足不同的业务市场需求。
Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:
欢迎各位开源爱好者参与到 Apinto 项目中,和我们一起为开源事业贡献自己的力量!
![](http://data.eolinker.com/course/wAhtpPvb8cf9c0cc891680cb6077b3c1d786119f05d359f.png)