![](/img/trans.png)
[英]How do I set the Content-Type on a camel-restlet producer request?
[英]How to set request body in Camel Restlet?
我有一個簡單的Camel get方法,我要做的就是將主體設置為XSL轉換的結果。 我該怎么做呢? 以下代碼無法編譯,但是顯示了我想要實現的目標:
rest("/api")
.get("/booksByAuthor/{author}")
.route()
.setBody(
from("file:/conf.xml")
.setHeader("author",simple("${header.author}"))
.to("xslt:/transformers/booksByAuthor.xsl")
);
您可以使用處理器將主體設置為xml文件,然后將其傳遞給xslt。 您不需要在消息正文中包含文件內容,只需文件的句柄就足以用於“ xslt:”。 就像是
rest("/api")
.get("/booksByAuthor/{author}")
.route()
.process(exchange -> exchange.getIn().setBody(new File("/conf.xml")))
.to("xslt:/transformers/booksByAuthor.xsl");
作者已經在消息標題中,因此您無需進行設置,就可以在xslt中使用
<xsl:param name="author"/>
<xsl:value-of select="$author"/>
我剛剛將處理器編寫為Java 8 lambda,但是如果願意,可以始終使用單獨的類。
如果要將XML文件的源獲取到消息中,而不是使用文件句柄,則可以使用pollEnrich讀取文件。 然后,您需要使用一種聚合策略來確保您保留原始消息的標頭。 最簡單的方法可能只是將帶有xml的郵件正文復制到原始郵件。 這是如何執行此操作的示例。
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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.