Looping over arrays

Learn how to loop over arrays in Hoverfly Cloud simulations using templating to dynamically generate responses.

The ability to loop over arrays of data can be very useful in constructing a response. Some of the arrays typically in a response are:

  • the elements of path

  • the headers in the request

  • an array of query parameters if there are more than one with the same name

  • a JSON array extracted from the body of a request

The following block is used to loop over an array:

  • {{#each}} {{else}} {{/each}}

You can use the @index, @key and this keywords to determine the index, key and value of the object under the iterator. You can use @last keyword to determine if the current object is the last one in the array.

Example 1:

{{#each Request.Header}}
	{{@index}} : {{@key}} : {{this}}
{{else}}
	No Request Headers were provided
{{/each}}

Example 2:

Using looping and conditional logic you can build our a JSON (or XML) response:

Given the following request body

{
    "people": [
        {
            "name": "John",
            "surname": "Doe",
            "age": 30
        },
        {
            "name": "Jane",
            "surname": "Lee",
            "age": 29
        }
    ]
}

And creating the following simulation body template

{ "ages":
    [
        {{#each (Request.Body 'JSONpath' '$.people') }}
        {{this.age}}
        {{#unless @last}},{{/unless}}
        {{/each}}
    ]
}

The result generated from the template and sent back in the body would be this:

{
    "ages": [
        30,
        29
    ]
}

Follow a tutorial here to learn more about looping

Last updated