有没有办法将 set-backend-service base-url 的响应存储在变量中并修改响应以形成我们自己的 JSON 输出?

问题描述 投票:0回答:1

我正在尝试通过 APIM 入站策略执行 azure 表存储。我正在通过 set-backend-service base-url 发送请求。但是我无法从后端 URL 访问响应并根据要求修改它。

我正在使用下面的脚本来获取响应,并且我正在尝试形成我自己的 JSON 结构。 但是除了 xml-to-json,我什么也做不了。

<policies>
<inbound>
    <base />
    <cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none">
        <vary-by-header>Accept</vary-by-header>
        <vary-by-header>Accept-Charset</vary-by-header>
    </cache-lookup>
    <set-variable name="SASToken" value="@("sas key")" />
    <set-variable name="TableStorageURL" value="@{string sastoken = context.Variables.GetValueOrDefault<string>("SASToken");return String.Format("https://storagedev.table.core.windows.net/data()?{0}", sastoken);}" />
    <set-backend-service base-url="@($"{context.Variables.GetValueOrDefault("TableStorageURL")}")" />
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
    <xml-to-json kind="direct" apply="always" consider-accept-header="false" />
    <cache-store duration="1000" cache-response="true" />
</outbound>
<on-error>
    <base />
</on-error>
azure azure-api-management azure-policy apim
1个回答
0
投票

您可以在set-body

范围内使用
outbound
策略
从后端获取响应并根据需要进行更改。

你甚至可以跳过

xml-to-json
政策。

另外,考虑使用液体模板,这将进一步简化您如何改变您的反应。

© www.soinside.com 2019 - 2024. All rights reserved.