【问题标题】:Apache Camel exchange body to URI query parametersApache Camel 将正文交换为 URI 查询参数
【发布时间】:2016-12-09 01:42:46
【问题描述】:

我有一个正在发出 HTTP POST 请求的 apache 骆驼路由,即

from(...).setHeader(Exchange.HTTP_METHOD, constant(POST)).to("http4://myUrl?...");

请求 URL 包括查询参数(我知道对于 POST 来说不常见,但我在这里别无选择),我需要从存储在正文中的交换详细信息中填充这些参数。

即body 就是这样的 POJO:

public class Params {
    String param1;
    int param2;
    ....
    //etc. etc. including getters and setters
}

其中每个字段要么是原语要么是字符串,并且直接引用等效的查询参数:

http4://myUrl?param1=...&param2=...&...

有没有一种方法可以避免手动定义 URL 上的每个参数,而是自动映射交换主体以查询正在发出的请求的参数?

我需要这样做的原因是一些查询参数是可选的,应该根据交换体的内容来填充。

【问题讨论】:

  • 可以设置header Exchange.HTTP_QUERY,查询参数用&分隔
  • 这仍然是手动的,我想知道是否有一种方法可以将对象映射到正文以查询参数,而无需在代码中指定每个参数。如果不是,那是一种很好的方法,谢谢。
  • 不,没有将消息正文字段自动映射到查询参数。
  • 感谢克劳斯(又名骆驼神谕),如果您想添加上述两个 cmets 作为正确答案,如果您愿意,我会将其标记为接受赏金。

标签: post apache-camel query-parameters


【解决方案1】:

您可以设置标头 Exchange.HTTP_QUERY 并分隔查询参数。

而且它不可能从消息体的字段自动映射到 URI 参数(不包括魔法)。您需要构建一些代码来计算 URI 查询,其中 & 分隔值,并将其设置为 HTTP_QUERY 标头。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多