热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Camel2.11–具有URL重写功能的HTTP代理路由

在即将发布的ApacheCamel2.11版本中,我最近添加了对将自定义url重写实现插入基于HTTP的路由(http,http4

在即将发布的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 {@Overridepublic 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的旧系统。

/products/([0-9]+)/products/index.jsp?product_id=$1

该项目甚至支持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



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • Centos7搭建ELK(Elasticsearch、Logstash、Kibana)教程及注意事项
    本文介绍了在Centos7上搭建ELK(Elasticsearch、Logstash、Kibana)的详细步骤,包括下载安装包、安装Elasticsearch、创建用户、修改配置文件等。同时提供了使用华为镜像站下载安装包的方法,并强调了保证版本一致的重要性。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 在加载一个第三方厂商的dll文件时,提示“找不到指定模块,加载失败”。由于缺乏必要的技术支持,百思不得期间。后来发现一个有用的工具 ... [详细]
author-avatar
nikechen
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有