Using the Response Body Transform middleware with Tyk Classic APIs
Last updated: 6 minutes read.
The response body transform middleware provides a way to modify the payload of API responses before they are returned to the client.
This middleware is configured in the Tyk Classic API Definition at the endpoint level. You can do this via the Tyk Dashboard API or in the API Designer.
If you’re using the newer Tyk OAS APIs, then check out the Tyk OAS page.
If you’re using Tyk Operator then check out the configuring the middleware in Tyk Operator section below.
Configuring the middleware in the Tyk Classic API Definition
To enable the middleware you must add a new transform_response
object to the extended_paths
section of your API definition.
The transform_response
object has the following configuration:
path
: the path to match onmethod
: this method to match ontemplate_data
: details of the Go template to be applied for the transformation of the response body
The Go template is described in the template_data
object by the following fields:
input_type
: the format of input data the parser should expect (eitherxml
orjson
)enable_session
: set this totrue
to make session metadata available to the transform templatetemplate_mode
: instructs the middleware to look for the template either in afile
or in a base64 encodedblob
; the actual file location (or base64 encoded template) is provided intemplate_source
template_source
: iftemplate_mode
is set tofile
, this will be the path to the text file containing the template; iftemplate_mode
is set toblob
, this will be abase64
encoded representation of your template
For example:
|
|
In this example, the Response Body Transform middleware is directed to use the template located in the file
at location ./templates/transform_test.tmpl
. The input (pre-transformation) response payload will be json
format and session metadata will be available for use in the transformation.
Note
Tyk will load and evaluate the template file when the Gateway starts up. If you modify the template, you will need to restart Tyk in order for the changes to take effect.
Note
Prior to Tyk 5.3, there was an additional step to enable response body transformation. You would need to add the following to the Tyk Classic API definition:
{
"response_processors":[
{"name": "response_body_transform"}
]
}
If using the Endpoint Designer in the Tyk Dashboard, this would be added automatically.
We removed the need to configure the response_processors
element in Tyk 5.3.0.
Configuring the middleware in the API Designer
You can use the API Designer in the Tyk Dashboard to configure the response body transform middleware for your Tyk Classic API by following these steps.
Step 1: Add an endpoint for the path and select the plugin
From the Endpoint Designer add an endpoint that matches the path for which you want to perform the transformation. Select the Body Transforms plugin.
Step 2: Configure the middleware
Ensure that you have selected the RESPONSE
tab, then select your input type, and then add the template you would like to use to the Template input box.
Step 3: Test the Transform
If you have sample input data, you can use the Input box to add it, and then test it using the Test button. You will see the effect of the template on the sample input in the Output box.
Step 4: Save the API
Use the save or create buttons to save the changes and activate the Response Body Transform middleware.
Configuring the middleware in Tyk Operator
The process of configuring a transformation of a response body for a specific endpoint is similar to that defined in section configuring the middleware in the Tyk Classic API Definition for the Tyk Classic API definition. To enable the middleware you must add a new transform_response
object to the extended_paths
section of your API definition.
In the examples below, the Response Body Transform middleware (transform_response
) is directed to use the template located in the template_source
, decoding the xml in the base64 encoded string. The input (pre-transformation) response payload will be xml
format and there is no session metadata provided for use in the transformation.
Example
|
|
Tyk Gateway < 5.3.0 Example
If using Tyk Gateway < v5.3.0 then a response_processor
object must be added to the API definition containing a response_body_transform
item, as highlighted below:
|
|