【问题标题】:Apache Camel - Servlet Component - is binding path variables possible?Apache Camel - Servlet 组件 - 是否可以绑定路径变量?
【发布时间】:2016-10-21 07:42:02
【问题描述】:

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

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

没有问题,因为matchOnUriPrefix为真,路由成功监听到如下url模式的请求:

host:port/basepath/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 组件是否有类似的可能?

【问题讨论】:

    标签: apache-camel


    【解决方案1】:

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

    默认情况下,所有请求标头和 query 参数都将设置为 in 消息的标头。请求的路径也存在(正如您通过标头 Exchange.HTTP_PATH 指出的那样),但未拆分为其组件。

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

    【讨论】:

    • 是的,这在带有 servlet 的纯 HTTP 中不受支持。但是,如果您使用 REST,那么您也可以使用支持路径绑定的 rest-dsl 与 servlet 组件。 camel.apache.org/rest-dsl
    • 谢谢!至少现在我知道它不受支持:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多