Hi All,
I have read the documentation on replacing strings in the response content. Seems there are two ways: via AssignMessage Policy or via a Javascript Policy. Is there any performance difference between these methods?
Also I am wondering why my policy doesn't work.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage name="AM-Set-Custom-Response"> <AssignTo createNew="false" type="response"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <Set> <Payload>{replace(response.content, '^https://urltoreplace/','https://replacementurl')}</Payload> </Set> </AssignMessage>
Thanks again for all the support this community provides.
I don't have an estimate for performance differences. AssignMessage is generally very fast, and JavaScript is generally slower. But ... I would suggest that you just use the simplest thing possible. Optimize on whatever seems to be most maintainable. Worry about performance later.
as for your policy, I suggest 3 things:
Like this:
<AssignMessage name="AM-Set-Custom-Response"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>needle</Name> <Value>^https://urltoreplace/</Value> </AssignVariable> <AssignVariable> <Name>replacement</Name> <Value>https://replacementurl</Value> </AssignVariable> <Set> <Payload>{replaceAll(response.content,needle,replacement)}</Payload> </Set> </AssignMessage>
Also, last thing, this is ineffectual, a no-op:
<AssignTo createNew="false" type="response"/>
...so you can safely omit it from your policy.