In APIM policy, I wish to copy value from request body in inbound policy to response body in outbound policy.
Is there a concept of global variable in APIM policies?
You can achieve this by using a variable.
Policy:
<policies> <inbound> <base /> <set-variable name="requestBody" value="@(context.Request.Body.As<JObject>(true))" /> </inbound> <backend> <!-- Unused for this sample <base /> --> </backend> <outbound> <base /> <set-body template="none">@{ // var responseBodyFromBackend = ((IResponse)context.Response).Body.As<string>(true); var requestBody = context.Variables.GetValueOrDefault<JObject>("requestBody"); var response = new JObject(); response["OriginalRequestBody"] = requestBody; return response.ToString(); }</set-body> </outbound> <on-error> <base /> </on-error> </policies> Request Body:
{ "hello": "world" } Response Body:
{ "OriginalRequestBody": { "hello": "world" } } policy, APIM saves it without any error messages. Did you change anything?<JObject> to xml encoded string -> <JObject>. Otherwise it gives me xml parsing errors in VS editor.