Apache Camel 将主体交换为 URI 查询参数

Apache Camel exchange body to URI query parameters

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

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

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

即主体是一个 POJO,如下所示:

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

其中每个字段都是原始类型或字符串,并直接引用等效的查询参数:

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

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

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

您可以设置 header Exchange.HTTP_QUERY 将查询参数分开。

而且无法将消息正文的字段自动映射到 URI 参数(不包含魔法)。您需要构建一些代码来计算使用 & 分隔值的 URI 查询,并将其设置为 HTTP_QUERY header.