I am learning Apigee..
I have a proxy, that is calling default TargetEndpoint and pointed to httpbin.org. I am trying to add a resource /report to my proxy. Intention is send the requests for service v1/myservice/report to httpbin.org. Either using same Target Endpoint or a new one…However, the proxy seems to append the /report resource path to my backend (httpbin.org) requests. How to avoid this? What is the best way to do this?
1 Like
The behavior you describe is as designed and documented.
You can disable the behavior by setting a specific context variable: target.copy.pathsuffix
Set it to false, in the target flow.
You can do this with an assignMessage policy, or with a JavaScript policy. Examples follow.
Option 1:
<AssignMessage name='AM-TCPS-False'>
<AssignTo createNew='false' type='request'/>
<AssignVariable>
<Name>target.copy.pathsuffix</Name>
<Value>false</Value>
</AssignVariable>
</AssignMessage>
Or, option 2:
<Javascript name='JS-TCPS-False'>
<ResourceURL>jsc://setTargetCopyPathSuffixFalse.js</ResourceURL>
</Javascript>
and for the latter, here is the JS:
context.setVariable('target.copy.pathsuffix', false);
In either case, you must attach the policy in the Request Flow of the Target. Something like this:
<TargetEndpoint name="default">
<Description/>
<Flows/>
<HTTPTargetConnection>
<Properties/>
<URL>http://httpbin.org</URL>
</HTTPTargetConnection>
<PreFlow name="PreFlow">
<Request>
<Step><Name>AM-TCPS-False</Name></Step>
</Request>
<Response/>
</PreFlow>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
</TargetEndpoint>
Good luck!
3 Likes