如何将请求中的值复制到 Azure API 管理策略中的响应中

Posted

技术标签:

【中文标题】如何将请求中的值复制到 Azure API 管理策略中的响应中【英文标题】:How to copy value from request into response in Azure API management policy 【发布时间】:2020-06-17 10:20:23 【问题描述】:

在 APIM 策略中,我希望将入站策略中的请求正文中的值复制到出站策略中的响应正文中。

APIM 策略中有全局变量的概念吗?

【问题讨论】:

【参考方案1】:

您可以通过使用变量来实现这一点。

政策:

        <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>

请求正文:


   "hello": "world"

响应正文:


    "OriginalRequestBody": 
        "hello": "world"
    

【讨论】:

以上是关于如何将请求中的值复制到 Azure API 管理策略中的响应中的主要内容,如果未能解决你的问题,请参考以下文章