First: Apiproxy doesn't receive any queryparams.
Then create a request in preFlow for the Target
Adding an AssignMessage policy called "new-queryParams" inside Flow (target)
<AssignMessage name='new-queryParams'> <Add> <Headers/> <QueryParams> <QueryParam name="val">{inputs.val}</QueryParam> <QueryParam name="utcTimeStamp">{inputs.utcTimestamp}</QueryParam> <QueryParam name="signature">{inputs.signature}</QueryParam> <QueryParam name="locale">{inputs.locale}</QueryParam> </QueryParams> </Add> <AssignTo createNew='false' transport='http' type='request'></AssignTo> </AssignMessage>
And then another AssignMessage that looks like this:
<AssignMessage name='set-payload'> <Set> <Verb>POST</Verb> <Payload contentType="application/json" variablePrefix="#" variableSuffix="$">#inputs.orders$</Payload> <Path>TakeOrder</Path> </Set> <AssignTo createNew='false' transport='http' type='request'></AssignTo> </AssignMessage>
TargetX
https://bla.xyzi/{request.uri}
but looking the trace, i can see the following:
<Get value="/api/iwsapi/TakeOrder?val=b81e&utcTimeStamp=2015-08-19T18%3A29%3A11Z&signature=167a9a1ab&locale=en&val=b81e&utcTimeStamp=2015-08-19T18%3A29%3A11Z&signature=167a9a1ab&locale=en" name="request.uri"/>
Why are the parameters duplicated?
Solved! Go to Solution.
I presume the incoming request has the same query params - out of the box Edge will propagate those to the target so if that were the case your assignMessage policy is essentially adding a second copy of each to the request.
Perhaps you can attach a copy of a simplified version of your bundle - with just the flow that is being executed so we can look at the full set of policies being executed.
Can you share some of your policy config - specifically where you are adding params?
PreFlow
Assign Message
<Add> <Headers/> <QueryParams> <QueryParam name="val">{inputs.val}</QueryParam> <QueryParam name="utcTimeStamp">{inputs.utcTimestamp}</QueryParam> <QueryParam name="signature">{inputs.signature}</QueryParam> <QueryParam name="locale">{inputs.locale}</QueryParam> </QueryParams> </Add>
create false type=request
Flow X
Assign Message
create false type=request
<Set> <Headers/> <QueryParams/> <FormParams/> <Verb>POST</Verb> <Payload contentType="application/json" variablePrefix="#" variableSuffix="$">#inputs.orders<;/Payload> <Path>TakeOrder</Path> </Set>
TargetX
I presume the incoming request has the same query params - out of the box Edge will propagate those to the target so if that were the case your assignMessage policy is essentially adding a second copy of each to the request.
Perhaps you can attach a copy of a simplified version of your bundle - with just the flow that is being executed so we can look at the full set of policies being executed.