在这里主要介绍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请求过虑的更多相关文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  2. HttpUrlConnection发送url请求(后台springmvc)

    1.HttpURLConnection发送url请求 public class JavaRequest { private static final String BASE_URL = "h ...

  3. Objective-C中把URL请求的参数转换为字典

    上一篇博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字 ...

  4. 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 ...

  5. SpringMVC学习系列(3) 之 URL请求到Action的映射规则

    在系列(2)中我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在系列(2)中我们在HelloWorldContr ...

  6. IIS 7.5 + asp.net MVC4 设置路由处理URL请求

    使用asp.net MVC4开发的网站,在本地的VS012环境下运行,一切正常.但当发布到Windows 2008 R2(IIS7.5 + Framework4.5)上时,访问相关网页时,出现有下面的 ...

  7. Request.url请求路径的一些属性

    Request.url请求路径的一些属性1,Request.UrlReferrer.AbsolutePath=获取URL的绝对路径例:"/Manager/Module/OfficialMan ...

  8. java解析出url请求的路径和参数键值对类 - 转

    import java.util.HashMap; import java.util.Map; public class CRequest { /** * 解析出url请求的路径,包括页面 * @pa ...

  9. 无论url请求什么.都可以拼接class类名.实例化.传递get参数-->给当前控制器-->传递给抽象父类-->都交给抽象父类.这个方法去处理call_user_func_array()

    <?phpdefine('DS','/');define('A_PATH',str_replace('\\','/',dirname(__FILE__)).DS); //01获取到主程序目录cl ...

随机推荐

  1. H3C PAP验证配置示例

  2. Python--day45--pymysql模块初识以及SQL注入

    pymysql模块学习路径:增删改的时候一定要conn.commit() pymysql模块实现登录功能: import pymysql user = input("username:&qu ...

  3. P1013 高精度加法

    题目描述 给你两个很大的正整数A和B,你需要计算他们的和. 输入格式 输入一行包含两个正整数A和B,以一个空格分隔(A和B的位数都不超过 \(10^5\)) 输出格式 输出一行包含一个整数,表示A+B ...

  4. MySQL Workbench: mysqldump version mismatch

    Windows10 64bit系统下,步骤就是: Edit --> preferences --> Administrator --> Path to mysqldump tool: ...

  5. H3C 端口隔离基本配置

  6. 【hdu 1850】Being a Good Boy in Spring Festival

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  7. <Standard Template Library>标准模板库专项复习总结(一)

    看了看博客园的申请时间也一年多了...想想自己一年多以来一直处于各种划水状态,现在又要面临ACM的冲击... 还是要抓紧时间赶紧复习一下了- -毕竟校园新生赛还是有奖金的.. 1.栈 先进后出(LIF ...

  8. koa2--06.koa-static中间件的使用

    koa-static中间件,主要用于设置静态文件资源的文件路径 首先安装koa-static中间,以下是代码示例 const koa = require('koa'); var router = re ...

  9. 牛客练习赛4 A Laptop

    传送门:https://ac.nowcoder.com/acm/contest/16/A 题意: 每个物品有2个属性,求有多少个物品的两个属性完全小于另一个物品 题解: 求逆序对板子题 代码: /** ...

  10. (转载)window安装mysql

    一.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Comp ...