We are trying to write some middleware to essentially hijack certain request (based on host/path/querystring) and forward to a different endpoint. Then rewrite the response based on a set of regular expressions to the user.
We have it able to match on path and querystring. It seems that Host is not exposed in the Request object. (point 1)
Some of the endpoints will have a querystring that need to be preserved. As far as what we could find (and read) TykMakeRequest does not support parameters. (point 2, but I can work around that w/ TykBatchRequest TykMakeHttpRequest and URL params - #9 by barcodez)
The full (mangled) Response from the endpoint , but the middleware’s request.ReturnOverrides does not support that. It only seems to support the message as an error string inside as json and the inablity to set headers. TykJsResponse does support headers and can return a full response, but is not available in middleware. (point 3, but the one that matters the most)
We’ve had some success setting up the script as a Virtual Path. Unfortunately, we would like to reuse it across a few different APIs and we cannot get past the Host/Query String matches in that Endpoint designer.
We’re looking for some idea around this.
(Ultimately, we would love love love to see something in the Endpoint Designer
match: ^http(s?)://(.*?)/abc/(.*)\?wsdl$
set variable:
- fullstring = $0
- proto = $1
- domain = $2
- path = $3
- responseAs = http$proto://$domain/abc/$path
- endpoint = https://backend.otherdomain.com/getWsdl?$path
urlrewrite: $endpoint
response transform substitute: -
https://backend.otherdomain.com/getWsdl?$path to $responseAs
)