2. Enterprise Integration Patterns

template

Version

Renders the body content of a message from a template. The template can produce plain text, Json or XML. Variables in the template are substituted with values from the body, header, query parameters, etc. If the extension of a referenced template file is .xml it will use XMLTemplateEngine otherwise StreamingTemplateEngine. Have a look at the samples in examples/templating. When the contentType is a JSON variant (e.g., application/json), the engine automatically escapes all inserted values. For example, in the JSON templating example, executing curl "localhost:2000/?answer=20" returns { "answer" : "20" }. The quotes surrounding the value 20 are added by the auto-escaping mechanism to ensure the output remains a valid string. This feature significantly mitigates security risks by preventing inadvertent JSON injection attacks.

Example Configuration

api:
port: 2000
flow:
- request:
- template:
contentType: application/json
src: |
{
"name": ${params.name},
"age": ${params.age}
}

- response:
- template:
location: template.xml
- return: {}
api:
   port: 2000
   flow:
     - request:
         - template:
             contentType: application/json
             src: |
               {
                 "name": ${params.name},
                 "age": ${params.age}
               }
     - response:
         - template:
             location: template.xml
     - return: {}

Syntax

template:
charset: <string>
contentType: <string>
location: <string>
pretty: <boolean>
src: <string>
template:
  charset: <string>
  contentType: <string>
  location: <string>
  pretty: <boolean>
  src: <string>

Attributes

NameRequiredDefaultDescriptionExamples
charsetfalseUTF-8Encoding of the template text.UTF-16, iso-8859-1
contentTypefalsetext/plainContent-Type of the generated body content.application/json
locationfalseN/AA file or URL location where the content that should be set as body could be foundconf/body.txt
prettyfalsefalseFormat the content of the template. Depending on the contentType the a formatter for JSON, XML or plain text is used.true
srcfalse---

Can be used in