我有一个servlet并使用camel路由来监听来自servlet的请求,如下所示:
from("servlet:///basepath?matchOnUriPrefix=true")
没有问题,因为matchOnUriPrefix为true,路由成功侦听了对以下url模式的请求:
主机:端口/基本路径/ dynamicSubPath
我想要的是,有什么方法可以让路径变量(dynamicSubPath)绑定到交换属性?
我知道我可以得到如下路径:
String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class);
但我不想做这样的字符串解析。在spring mvc中,我可以将路径变量注入控制器,如下所示:
@RequestMapping(path = "/basepath/{dynamicSubPath}", method = RequestMethod.GET)
然后可以获得dynamicSubPath变量,如下所示:
@PathVariable String dynamicSubPath
camel servlet组件是否有类似的东西?
答案 0 :(得分:1)
我不认为骆驼支持这一点。
默认情况下,所有请求标头和查询参数都将设置为邮件中的标头。请求的路径也存在(正如您通过标题Exchange.HTTP_PATH
指出的那样)但不会分成其组件。
我担心你必须注册一个解析字符串的自定义处理器,并将路径变量设置为消息头或相应地交换属性。