template
Description
If enabled fills given template from exchange properties and replaces the body. The template can be put between tags or can be loaded from file using location attribute. If the extension of the given file is XML it will use XMLTemplateEngine otherwise StreamingTemplateEngine .
Can be used in
spring:beans, api, bean, if, interceptor, internalProxy, proxy, registration, request, response, serviceProxy, soapProxy, stompProxy, swaggerProxy, transport and wsStompReassembler
Sample
Text Template
Call it with a query parameter name:
http://localhost:2000?name=Joe
<api port="2000"> <request> <template contentType="text/plain">Hello ${params.name}!</template> </request> <return statusCode="200"/> </api>
JSON Template
Call it with the answer.
http://localhost:2000?answer=42
<api name="JSON" port="2000" method="GET"> <request> <template contentType="application/json" pretty="yes"> { "answer": ${params.answer}, "foo": 7 } </template> </request> <return statusCode="200"/> </api>
XML Template
Send a POST with an XML body content to the api.
<api port="2000"> <request> <template location="template.xml"/> </request> <return statusCode="200"/> </api>
If the filename of the template ends with .xml you can use the elements from the gsp namespace. See GroovyXMLTemplate Engine
<destinations xmlns:gsp='http://groovy.codehaus.org/2005/gsp'> <gsp:scriptlet>def answer = 42;</gsp:scriptlet> <answer><gsp:expression>answer</gsp:expression></answer> <gsp:scriptlet> import groovy.xml.XmlSlurper def xml = new XmlSlurper().parseText(body) </gsp:scriptlet> <gsp:scriptlet>xml.children().each { </gsp:scriptlet> <destination><gsp:expression>it</gsp:expression></destination> <gsp:scriptlet> } </gsp:scriptlet> </destinations>
Attributes
Name | Required | Default | Description | Example |
---|---|---|---|---|
contentType | false | - | content type for body | |
location | false | - | path of xml template file. | |
pretty | false | - |
Variables
The following variables can be accessed within a template.
Name | Class | Description |
---|---|---|
exc | com.predic8.membrane.core.exchange.Exchange | The Exchange class provides, among others, access to the Request, Response and their corresponding Headers. |
message | com.predic8.membrane.core.http.Message | Message is the superclass of a request or a response. Depending on the flow the message contains data from the request or the response. |
header | com.predic8.membrane.core.http.Header | The header object allows access to the HTTP header fields. You can remove, add and change fields. |
body | com.predic8.membrane.core.http.Body | The body of the message. |
json | java.util.Map | If the message contains a body of the type application/json this varible will contain the JSON as a Map. Use it only to read the JSON document. |
flow | com.predic8.membrane.core.interceptor.Flow | REQUEST or RESPONSE |
properties | java.util.Map | The properties of the exchange object. |
spring | org.springframework.context.ApplicationContext | The Spring application context hosting the router instance (or null, if the router is not hosted by Spring). |