beetlex网关之聚合和url请求过虑

栏目: IT技术 · 发布时间: 4年前

内容简介:在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求。在网关服务中请求聚合是允许把多个请求打包成一个响应给请求方,这样不仅可以节省请求方的请求数量,还可以根据需求的情况整合不同业务数据响应请求。可以通过

在这里主要介绍beetlex应用网关的两个插件,分别是聚合和url请求过虑.通过聚合插件可以把整合多个请求的数据来应答请求端,而Url请求过虑同可以拒绝一些有非常关键字的请求。

请求聚合

在网关服务中请求聚合是允许把多个请求打包成一个响应给请求方,这样不仅可以节省请求方的请求数量,还可以根据需求的情况整合不同业务数据响应请求。 BeetleX.Bumblebee 虽然并没有内置这一功能,但可以通过扩展的形式来支持请求聚合,接下来就介绍一下组件的聚合插件使用。

引用插件

可以通过 Nuget 安装最新版本 BeetleX.Bumblebee.Aggregation ,安装后通过网关加载插件(需要更新BeetleX.FastHttpApi 到1.7.7.8)

gateway.LoadPlugin(typeof(Bumblebee.Aggregation.Aggregate).Assembly);

注册了插件后,可以在管理的插件页面看到相关插件

beetlex网关之聚合和url请求过虑

插件默认是不启用,启用前需要配置相关的 Url 聚合。

应用需求

现在有两个请求,一个是获取雇员信息,另一个则获取雇员相关订单,情况如下:

http://192.168.2.25:9090/employee/2

beetlex网关之聚合和url请求过虑

http://192.168.2.26:9090/orders/2

beetlex网关之聚合和url请求过虑

接下来希望访问以下地址来整合两个接口的数据输出

http://host/GetEmployeeOrders?id=2

配置

接下来根据上面的情况来制定一个聚合配置,点击插件进行配置页面

beetlex网关之聚合和url请求过虑

配置信息是一个数组结构,可以根据需要来定义多个聚合请求路径。 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 (注意要先启用插件)

beetlex网关之聚合和url请求过虑

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

beetlex网关之聚合和url请求过虑

当提供正确的参数后就把请求数据聚合到正常结果输出

不输出错误

有时候为了方便处理不想输出错误,当聚合 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}"
      }
    ]
  }
]

beetlex网关之聚合和url请求过虑

通过以上介绍组件制定聚合处理是不是非常方便呢,如果想更多了解组件可以访问

url请求过虑

一旦网站部署到互联网上,就会受到一些非法的请求,而这些请求的 Url 都是一些特定的路径或带上一些无关请求的字符用于探测一些服务存在的问题;还有这些请求会落到日志中,导致日志臃肿和转发到后台服务带能处理上的损耗。为了应对拦截这些请求不流入到后台节点服务,组件提供了一个插件来解决这一问题。

引用组件

可以通过 Nuget 引用 BeetleX.Bumblebee.InvalidUrlFilter ,引用之后通过组件加载这个插件的程序集即可:

Gateway.LoadPlugin(typeof(Bumblebee.InvalidUrlFilter.RequestUrlFilter).Assembly);

引用成功后,通过管理插件提供的列表中可以看到

beetlex网关之聚合和url请求过虑

这个插件默认是关闭,如果有需要开启即可。

配置插件

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

beetlex网关之聚合和url请求过虑

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

beetlex网关之聚合和url请求过虑

只需发简单地配置,就可以过虑一些非法的Url请求


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++ API设计

C++ API设计

[美] Martin Reddy / 刘晓娜、臧秀涛、林健 / 人民邮电出版社 / 2013-8 / 89.00

现代软件开发中的一大难题就是如何编写优质的API。API负责为某个组件提供逻辑接口并隐藏该模块的内部细节。多数程序员依靠的是经验和冒险,从而很难达到健壮、高效、稳定、可扩展性强的要求。Martin Reddy博士在自己多年经验基础之上,对于不同API风格与模式,总结出了API设计的种种最佳策略,着重针对大规模长期开发项目,辅以翔实的代码范例,从而有助于设计决策的成功实施,以及软件项目的健壮性及稳定......一起来看看 《C++ API设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换