apache-camel: http 查询字符串参数为 headers?
apache-camel: http query string parameter as headers?
我是 camel 的新手,更喜欢使用 Spring DSL 进行路由定义。现在我发现它令人困惑,http 查询字符串参数被命名和处理为 headers,但它们不是。这是骆驼的架构错误吗?
传入的 http 请求将作为 headers 添加到与查询参数同名的交换中。
以下示例来自 camel 文档
For example, given a client request with the URL,
http://myserver/myserver?orderid=123, the exchange will contain a
header named orderid with the value 123.
您可以通过 CamelHttpQuery
header 的设置为您进行的其他 HTTP 调用设置查询参数。 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")
另一种解决方法是使用 toD 组件 (SendDynamicProcessor) 并使用 http4 组件在内部调用 URL。
使用 camel-http4 2.X.X。 & 来自 Camel 3.X http4 合并到 http.
我正在分享一种您可以概括和控制一些事情的方法。
- uri可以动态设置。
- 参数可以根据需要动态添加。
您可以通过此路由调用具有少量配置值(headers、body、GET/POST、查询参数等)的不同端点。
<!-- 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>
你可以使用toD。例如:
from("direct:mycode")
.toD("https://myurl?param1=${header.param1}");
我是 camel 的新手,更喜欢使用 Spring DSL 进行路由定义。现在我发现它令人困惑,http 查询字符串参数被命名和处理为 headers,但它们不是。这是骆驼的架构错误吗?
传入的 http 请求将作为 headers 添加到与查询参数同名的交换中。
以下示例来自 camel 文档
For example, given a client request with the URL, http://myserver/myserver?orderid=123, the exchange will contain a header named orderid with the value 123.
您可以通过 CamelHttpQuery
header 的设置为您进行的其他 HTTP 调用设置查询参数。 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")
另一种解决方法是使用 toD 组件 (SendDynamicProcessor) 并使用 http4 组件在内部调用 URL。
使用 camel-http4 2.X.X。 & 来自 Camel 3.X http4 合并到 http.
我正在分享一种您可以概括和控制一些事情的方法。
- uri可以动态设置。
- 参数可以根据需要动态添加。
您可以通过此路由调用具有少量配置值(headers、body、GET/POST、查询参数等)的不同端点。
<!-- 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>
你可以使用toD。例如:
from("direct:mycode")
.toD("https://myurl?param1=${header.param1}");