apache-camel:http查询字符串参数作为头文件?

问题描述 投票:1回答:2

我是骆驼的新手,喜欢用Spring DSL来定义路由。现在我发现很困惑,http查询字符串参数被命名为头文件并被处理,而它们不是。这是不是camel的架构错误?

http-headers apache-camel uri dsl query-parameters
2个回答
3
投票

传入的http请求将作为头信息添加到交换中,其名称与查询参数相同。

以下是骆驼文档中的例子

例如,给定一个带有URL的客户端请求。 http:/myservermyserver?orderid=123。交易所将包含一个名为orderid的头,值为123。

你可以为你进行的其他HTTP调用设置查询参数,通过设置 CamelHttpQuery 头的静态常量。Exchange.HTTP_QUERY 是字符串的静态常量 CamelHttpQuery

例如

from("jetty://0.0.0.0:8080/test")
    .setHeader(Exchange.HTTP_QUERY, simple("?param1=${header.param1}")
    .to("http://external-url/test")

0
投票

另一种方法是使用toD组件(SendDynamicProcessor),然后在内部使用http4组件调用URL。

使用camel-http4 2.X.X.&从Camel 3.X http4合并到http。

我分享一个你可以通用和控制一些东西的方法。

  1. uri可以动态设置。
  2. Param可以在需要时动态添加。
  3. 你可以通过这个路由来调用不同的端点,只需要几个配置值(headers,body,GETPOST,query params等)。

    <!-- param will be List or Array of String key=value and make toString to create query of format key1=value1&key2=value2 -->
    <route id="httpInvoker">
       <from uri="direct:httpInvoker"/>
       <setHeader headerName="CamelHttpQuery"><simple>ref:param_bean<simple></setHeader>
       <setHeader headerName="CamelHttpUri"><simple>ref:uri_bean<simple></setHeader>
       <toD uri="http4:\\some-example.com">
    <route>
    
© www.soinside.com 2019 - 2024. All rights reserved.