beetlex网关之聚合和url请求过虑
在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求。
请求聚合
在网关服务中请求聚合是允许把多个请求打包成一个响应给请求方,这样不仅可以节省请求方的请求数量,还可以根据需求的情况整合不同业务数据响应请求。BeetleX.Bumblebee虽然并没有内置这一功能,但可以通过扩展的形式来支持请求聚合,接下来就介绍一下组件的聚合插件使用。
引用插件
可以通过Nuget安装最新版本BeetleX.Bumblebee.Aggregation,安装后通过网关加载插件(需要更新BeetleX.FastHttpApi 到1.7.7.8)
gateway.LoadPlugin(typeof(Bumblebee.Aggregation.Aggregate).Assembly);
注册了插件后,可以在管理的插件页面看到相关插件

插件默认是不启用,启用前需要配置相关的Url聚合。
应用需求
现在有两个请求,一个是获取雇员信息,另一个则获取雇员相关订单,情况如下:
http://192.168.2.25:9090/employee/2

http://192.168.2.26:9090/orders/2

接下来希望访问以下地址来整合两个接口的数据输出
http://host/GetEmployeeOrders?id=2
配置
接下来根据上面的情况来制定一个聚合配置,点击插件进行配置页面

配置信息是一个数组结构,可以根据需要来定义多个聚合请求路径。Url表示聚合的请求路径,OutputError用于描述如果某个请求有错误是否把错误输出,Actions相应聚合的多项请求地址。针对刚提到的需要配置如下:
[
{
"Url": "/GetEmployeeOrders",
"OutputError": true,
"Actions": [
{
"Name": "Employee",
"Host": "http://192.168.2.25:9090",
"Url": "/employee/{id}"
},
{
"Name": "Orders",
"Host": "http://192.168.2.26:9090",
"Url": "/orders/{id}"
}
]
}
]
配置支持通过{xxx}的方式把请求的参数传递到聚合请求中。接下来尝试访问一下/GetEmployeeOrders(注意要先启用插件)

由于没有带上参数所以访问返回了404,接下来带上正式的参数

当提供正确的参数后就把请求数据聚合到正常结果输出
不输出错误
有时候为了方便处理不想输出错误,当聚合Url有错误只响应null。这样只需要把OutputError调整一下即可
[
{
"Url": "/GetEmployeeOrders",
"OutputError": false,
"Actions": [
{
"Name": "Employee",
"Host": "http://192.168.2.25:9090",
"Url": "/employee/{id}"
},
{
"Name": "Orders",
"Host": "http://192.168.2.26:9090",
"Url": "/orders/{id}"
}
]
}
]

通过以上介绍组件制定聚合处理是不是非常方便呢,如果想更多了解组件可以访问
url请求过虑
一旦网站部署到互联网上,就会受到一些非法的请求,而这些请求的Url都是一些特定的路径或带上一些无关请求的字符用于探测一些服务存在的问题;还有这些请求会落到日志中,导致日志臃肿和转发到后台服务带能处理上的损耗。为了应对拦截这些请求不流入到后台节点服务,组件提供了一个插件来解决这一问题。
引用组件
可以通过Nuget引用BeetleX.Bumblebee.InvalidUrlFilter,引用之后通过组件加载这个插件的程序集即可:
Gateway.LoadPlugin(typeof(Bumblebee.InvalidUrlFilter.RequestUrlFilter).Assembly);
引用成功后,通过管理插件提供的列表中可以看到

这个插件默认是关闭,如果有需要开启即可。
配置插件
插件默认是不过虑任何请求的Url,你需要配置一些非常的关键字词组,只要请求的Url存在这些词组即可被组件拒绝。配置可以点击插件进行配置页面.

可以根据需要来添加一些非常法的关键字,添加完成后保存即可。如果请求的Url有相关内容即会响应网关错误

只需发简单地配置,就可以过虑一些非法的Url请求
beetlex网关之聚合和url请求过虑的更多相关文章
- 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...
- HttpUrlConnection发送url请求(后台springmvc)
1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...
- Objective-C中把URL请求的参数转换为字典
上一篇博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字 ...
- AFNETWorking 不支持中文URL请求
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p ...
- SpringMVC学习系列(3) 之 URL请求到Action的映射规则
在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在系列(2)中我们在HelloWorldContr ...
- IIS 7.5 + asp.net MVC4 设置路由处理URL请求
使用asp.net MVC4开发的网站,在本地的VS012环境下运行,一切正常.但当发布到Windows 2008 R2(IIS7.5 + Framework4.5)上时,访问相关网页时,出现有下面的 ...
- Request.url请求路径的一些属性
Request.url请求路径的一些属性1,Request.UrlReferrer.AbsolutePath=获取URL的绝对路径例:"/Manager/Module/OfficialMan ...
- java解析出url请求的路径和参数键值对类 - 转
import java.util.HashMap; import java.util.Map; public class CRequest { /** * 解析出url请求的路径,包括页面 * @pa ...
- 无论url请求什么.都可以拼接class类名.实例化.传递get参数-->给当前控制器-->传递给抽象父类-->都交给抽象父类.这个方法去处理call_user_func_array()
<?phpdefine('DS','/');define('A_PATH',str_replace('\\','/',dirname(__FILE__)).DS); //01获取到主程序目录cl ...
随机推荐
- Pytest - 使用介绍
1. 概述 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1.简单灵活,容易上手,文档丰富: 2.支持参数化,可以细粒度地控制要测试的测试用例: 3.能够支持简单的单 ...
- 使用基于Apache Spark的随机森林方法预测贷款风险
使用基于Apache Spark的随机森林方法预测贷款风险 原文:Predicting Loan Credit Risk using Apache Spark Machine Learning R ...
- SQL 变量,运算符
一.变量 SQL语言也跟其他编程语言一样,拥有变量.分支.循环等控制语句. 在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量. (一).局部变量 使用declare关键字给变量声明, ...
- 在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作
CentOS 7.3 这部分以在 CentOS 7.3 上安装 nginx 服务为例,说明在 Linux 实例中如何检查 TCP 80 端口是否正常工作. 登录 ECS 管理控制台,确认实例所在安全组 ...
- Python--day22--面向对象的交互
Python里面自带的类和对象: 类名的作用: 类里面的与属性相关的对象self的运用: 实例化:就是创建一个对象 调用方法,类名.方法名(对象名) 执行步骤: 简写:alex.walk()等价于Pe ...
- 【Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?膨胀卷积
介绍关于空洞卷积的理论可以查看以下链接,这里我们不详细讲理论: 1.Long J, Shelhamer E, Darrell T, et al. Fully convolutional network ...
- H3C 寻找邻居
- 【codeforces 764C】Timofey and a tree
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- SpringBoot项目改变图片临时文件的存储路径
springboot项目,部署到服务器后,运行一段时间后,处理文件上传的接口时,后报异常. Could not parse multipart servlet request; nested exce ...
- H3C Hosts文件