Camel 2.11 –具有URL重写功能的HTTP代理路由

在即将发布的Apache Camel 2.11版本中,我最近添加了对将自定义url重写实现插入基于HTTP的路由(http,http4,jetty)的支持。 当您使用骆驼代理/桥接HTTP路由时,这使人们可以控制url映射。
例如,假设您需要代理一个旧式HTTP服务并插入一个映射URL的策略。 现在使用Camel 2.11更容易了。 在各种HTTP组件中添加了一个新的urlRewrite选项,用于插入自定义url重写器。 例如,具有如图所示的http代理路由,我们在http生产者端点上使用新的urlRewrite选项。

from("jetty:http://localhost:{{port}}/myapp?matchOnUriPrefix=true")
    .to("jetty:http://somewhere:{{port2}}/myapp2?bridgeEndpoint=true&throwExceptionOnFailure=false&urlRewrite=#myRewrite");

简而言之,您可以通过实现UrlRewrite接口来实现自定义策略,如下所示。 由于这是来自单元测试,因此我们只将url中的yahoo替换为google(是的,这不是实际适用的示例)。

public class GoogleUrlRewrite implements UrlRewrite {

  @Override
  public String rewrite(String url, String relativeUrl, Producer producer) {
      return url.replaceAll("yahoo", "google");
  }
}

在重写方法中,Camel为您提供了绝对URL(例如,包括scheme:host:port / path?query)或相对URL,它是相对于路由中配置的uri的偏移量(请参见下文)。 但是,这一切都为您提供了控制URL映射的全部能力,甚至可以返回一个新的绝对URL。 如果返回null,则使用默认策略,即1:1 url映射。 不仅如此,还有一个新的组成部分

引入新的camel-urlrewrite组件

新的camel-urlrewrite组件是基于UrlRewriteFilter项目的新url重写插件的实现。 该项目为将重写策略指定为规则提供了强大的支持,并使其引擎评估了这些规则。

例如,我们可以在URL重写XML配置文件中包含N +条规则。 在下面的示例中,我们有一条规则来重写url以适应使用JSP的旧系统。

<urlrewrite>

  <rule>
    <from>/products/([0-9]+)</from>
    <to>/products/index.jsp?product_id=$1</to>
  </rule>

</urlrewrite>

该项目甚至支持Apache mod_rewrite样式,该样式允许您定义规则,就像使用Apache HTTP服务器一样。 尽管如果您不熟悉mod_rewrite样式,则它的样式密集且需要一些时间来理解-但功能非常强大。 所有这些都在带有示例的camel-urlrewrite组件页面上进行了记录。 而且,如果您想寻找更多,那么检查单元测试源代码也是了解更多信息的好方法。 我鼓励您看一下新的camel-urlrewrite页面,因为它包含完整的示例和更多详细信息,这是我在此简短博客中概述的内容。

参考: Camel 2.11 –来自我们的JCG合作伙伴 Claus Ibsen在Apache Camel博客的Claus Ibsen上的具有URL重写功能的HTTP代理路由

翻译自: https://www.javacodegeeks.com/2013/01/camel-2-11-http-proxy-routes-with-url-rewriting-functionality.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值