首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在“骆驼餐厅”中设置请求体?

如何在“骆驼餐厅”中设置请求体?
EN

Stack Overflow用户
提问于 2018-12-08 11:13:51
回答 1查看 2.3K关注 0票数 1

我有一个简单的Camel get方法,我所要做的就是将body设置为XSL转换的结果。我该怎么做?下面的代码没有编译,但它显示了我想要实现的目标:

代码语言:javascript
运行
复制
rest("/api")
    .get("/booksByAuthor/{author}")
    .route()
    .setBody(
        from("file:/conf.xml")
        .setHeader("author",simple("${header.author}"))
        .to("xslt:/transformers/booksByAuthor.xsl")
    );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-08 15:25:17

您可以使用处理器将主体设置为xml文件,然后将其传递给xslt。您不需要在消息体中包含文件内容,只需一个文件句柄就可以使用"xslt:“。有点像

代码语言:javascript
运行
复制
    rest("/api")
        .get("/booksByAuthor/{author}")
        .route()
        .process(exchange -> exchange.getIn().setBody(new File("/conf.xml")))
        .to("xslt:/transformers/booksByAuthor.xsl");

作者将已经在消息头中,所以您不需要设置它,您将能够在xslt中使用

代码语言:javascript
运行
复制
    <xsl:param name="author"/>
    <xsl:value-of select="$author"/>

我刚刚将处理器编写为Java 8 lambda,但如果您愿意的话,始终可以使用单独的类。

如果希望将xml文件的源输入消息,而不是使用文件句柄,则可以使用pollEnrich读取文件。然后,您将需要使用聚合策略,以确保头部不受原始消息的影响。最简单的方法可能是将正文从带有xml的消息复制到原始消息。下面是一个如何做到这一点的例子。

代码语言:javascript
运行
复制
    rest("/api")
        .get("/booksByAuthor/{author}")
        .route()
        .pollEnrich("file:/?fileName=conf.xml&noop=true", (original, xml) -> {
                original.getIn().setBody(xml.getIn().getBody());
                return original;})
        .to("xslt:/transformers/booksByAuthor.xsl");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53681960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档