如何阻止Apache Camel将路由路径追加至被调用的目标URL
Apache Camel路径追加问题解决
问题原因
Apache Camel的HTTP/HTTPS组件默认会读取Exchange中的HttpPath头信息,并将其追加到目标URL末尾。你的场景中,platformHttp("/api/test")会把请求路径/api/test存入HttpPath头,即使设置了bridgeEndpoint=true,这个参数仅负责替换目标URL的主机和端口,不会清空已有的路径信息,因此最终请求会变成https://google.com/api/test。
解决方法
有两种简单的方式可以阻止路径追加:
方法1:在HTTPS端点添加skipEndpointPath=true参数
该参数会告诉Camel不要将HttpPath头的内容追加到目标URL,直接使用配置的基础URL:
from(platformHttp("/api/test")) .to("https:google.com?bridgeEndpoint=true&skipEndpointPath=true") .setBody(simple("${body}"));
方法2:手动移除HttpPath头
在调用目标端点前,显式移除Exchange.HTTP_PATH头,这样Camel就没有路径信息可以追加:
import org.apache.camel.Exchange; from(platformHttp("/api/test")) .removeHeader(Exchange.HTTP_PATH) .to("https:google.com?bridgeEndpoint=true") .setBody(simple("${body}"));
内容的提问来源于stack exchange,提问作者Marian Klühspies
相关产品推荐
相关产品推荐

