代码之家  ›  专栏  ›  技术社区  ›  simpleusr

ApacheCamel-Servlet组件-是否可以绑定路径变量?

  •  1
  • simpleusr  · 技术社区  · 9 年前

    我有一个servlet,并使用camel路由来侦听来自servlet的请求,如下所示:

     from("servlet:///basepath?matchOnUriPrefix=true")
    

    这没有问题,因为matchOnUriPrefix为true,所以路由成功监听对以下url模式的请求:

    主机:端口/基本路径/动态子路径

    我想要的是,是否有任何方法可以使路径变量(dynamicSubPath)绑定到exchange属性?

    我知道我可以得到如下路径:

     String path = exchange.getIn().getHeader(Exchange.HTTP_PATH, String.class);
    

    但我不想做这样的字符串解析。在spring mvc中,我可以将路径变量注入控制器,如下所示:

     @RequestMapping(path = "/basepath/{dynamicSubPath}", method = RequestMethod.GET)
    

     @PathVariable String dynamicSubPath
    

    对于camel servlet组件,是否也有类似的情况?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Claudius B    9 年前

    我认为骆驼不支持这一点。

    默认情况下,所有请求头和 查询 参数将设置为in消息的标题。请求的路径也存在(正如您通过标题指出的) Exchange.HTTP_PATH )但不被分成其组分。

    恐怕您必须注册一个自定义处理器来解析字符串,并相应地将路径变量设置为消息头或交换属性。