I'm trying to call an another service internally using proxy chain. the intermediate service receives the call but not the URI. When I look at the policy in trace I see the complete URI.
Here's what I'm doing in last 2 steps
<AssignMessage name="Verify_Request"> <DisplayName>Verify_Request</DisplayName> <Properties/> <Set> <Verb>GET</Verb> <Path>/abc/bbc/api/def</Path> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<ServiceCallout name="SC-verify"> <Request clearPayload="true"> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </Request> <Response>calloutResponse</Response> <LocalTargetConnection> <APIProxy>VerificationProxy</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </ServiceCallout>
If you want the ServiceCallout policy to reference a particular request object, you must create a new one with AssignMessage. That means
<AssignTo createNew="true" transport="http" type="request">my_sc_request</AssignTo>
Also you need to then reference that request in the ServiceCallout policy. like this
<Request clearPayload="false" variable="my_sc_message"/>
Putting it together, ...
AssignMessage
<AssignMessage name="AM-Verify-Request"> <Set> <Verb>GET</Verb> <Path>/abc/bbc/api/def</Path> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">verifyRequest</AssignTo> </AssignMessage>
ServiceCallout
<ServiceCallout name="SC-verify"> <Request clearPayload="false" variable="verifyRequest"/> <Response>calloutResponse</Response> <LocalTargetConnection> <APIProxy>VerificationProxy</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection> </ServiceCallout>
I suggest that you follow a naming convention for your policies. SC => ServiceCallout, and AM=> AssignMessage. And similarly for RaiseFault, KeyValueMapOperations, and etc.
User | Count |
---|---|
5 | |
2 | |
1 | |
1 | |
1 |