基于路径参数的 Azure API 管理响应缓存

标签 azure caching azure-api-management ibm-api-management

当整个响应基于一个路径参数内部缓存在 APIM 中时,我需要实现业务逻辑。例如。 URI 是:

https://<apimhostname>/mycustomapi/v1/domains/<domain_id>/services

基于 domain_id 路径参数,在 GET 操作期间,我需要缓存特定 domain_id 的整个响应,然后在后续请求期间将其返回给客户端给定的域 ID。可能的domain_id值的数量小于10。

我看到vary-by-query-parameter策略,它根据指定查询参数的值缓存整个响应。但事实上,我没有查询参数。另一方面,有cache-store-value策略允许按键存储值。就我而言, key 是 domain_id 但我不确定是否可以以这种方式存储整个响应。

在这种情况下,最好使用哪种方法来根据路径参数缓存整个响应?

此外,我有一个 Authorization header ,其中包含在 APIM 端 ( validate-jwt 策略),但是,我的后端验证了“角色”声明。那么,当我回复缓存的响应时,有什么方法可以验证 APIM 端的角色声明吗?

谢谢。

最佳答案

缓存存储策略 ( https://learn.microsoft.com/en-us/azure/api-management/api-management-caching-policies#StoreToCache ) 将执行您需要执行的操作:

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="true" vary-by-developer-groups="false"/>
    </inbound>
    <outbound>
        <base />
        <cache-store duration="3600" />
    </outbound>
</policies>

如果请求 URL 由相同的 APIM 操作处理,则上述策略会将请求 URL 纳入考虑事件。 IE。请求https://<apimhostname>/mycustomapi/v1/domains/1/serviceshttps://<apimhostname>/mycustomapi/v1/domains/2/services将单独缓存。

关于基于路径参数的 Azure API 管理响应缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71498141/

相关文章:

caching - Apache NiFi 集群中的分布式 map 缓存问题

azure - Terraform:Azure API 管理授权 - 客户端凭据

azure - Azure Key Vault 中的 AATL 文档签名证书

c# - 更新消息后弹出收据已更改

azure - 在不同的 Azure 环境中创建单独的 Azure Key Vault 是否合适?

ruby-on-rails - Rails 如何在不锁定的情况下触摸 Active Record 对象?

visual-studio - 如何从 Azure 部署包中排除文件?

php - 在 PHP 中缓存(MySQL MEMORY 引擎)

Azure APIM 内部 Vnet 集成。无法部署/创建 API & [无法连接到管理端点]

api - Azure API 管理始终返回 404 未找到资源