azure-api-management - 如何使用 Azure API Manager 缓存存储值策略存储 JSON 有效负载?

标签 azure-api-management

美好的一天,

我尝试使用“缓存存储值”策略将传入的 JSON 负载存储到 Azure API Manager 内部缓存中。 key 将是有效负载内的字段之一。我能够提取 key ,但是当我尝试存储有效负载时,我收到错误

“表达式计算失败。未将对象引用设置为对象的实例。”

这是我正在编写的代码

<policies>
<inbound>
    <base />
    <set-variable name="processIdKey" value="@((string)context.Request.Body.As<JObject>()["id"])" />
    <set-variable name="validationResults" value="@(context.Request.Body.As<JObject>())" />
    <cache-store-value key="@((string)context.Variables["processIdKey"])" value="@((string)context.Variables["validationResults"])" duration="30" />
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>

我稍后需要在 api 的另一个方法中提取该值,因此需要知道如何将 JSON 有效负载存储在缓存中并提取相同的内容以作为另一个方法中的响应发送。

预先感谢您的帮助。

最佳答案

我找到了答案,问题是,我们无法在整个代理中多次提取 context.Request 对象。所以我要做的就是将其存储在变量中作为 JObject,然后从中提取“id”字段。稍后将其转换为字符串以存储在缓存中。这是更新后的代码。

<policies>
<inbound>
    <base />
    <set-variable name="validationResults" value="@(context.Request.Body.As<JObject>())" />
    <set-variable name="processIdKey" value="@((string)((JObject)context.Variables["validationResults"])["id"])" />
    <set-variable name="payload" value="@((string)((JObject)context.Variables["validationResults"]).ToString())" />
    <cache-store-value key="@((string)context.Variables["processIdKey"])" value="@((string)context.Variables["payload"])" duration="30" />
</inbound>
<backend>
    <base />
</backend>
<outbound>
    <base />
</outbound>
<on-error>
    <base />
</on-error>

希望有帮助。谢谢。

关于azure-api-management - 如何使用 Azure API Manager 缓存存储值策略存储 JSON 有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845273/

相关文章:

azure - 将 Azure 应用程序网关与 Azure API 管理服务结合使用时访问 Azure API 开发人员门户时出现错误

azure - 液态体内返回应对政策

azure - Azure API 管理中的分摊成本

Azure 文本到语音 API 音频输出未播放

Azure Devops 运行结果步骤和运行摘要详细信息附件 API

azure - Databricks REST API 返回 HTTP 400 错误(带有 AAD 访问 token )

azure - 如何禁用Azure API管理开发者门户中的try it功能?

azure - 在 Api Management 的 validate-jwt 中验证 "scp"

azure-logic-apps - 从 Azure 逻辑应用访问 Azure VNet

Azure API 管理和 HMAC