当整个响应基于一个路径参数内部缓存在 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/services
和https://<apimhostname>/mycustomapi/v1/domains/2/services
将单独缓存。
关于基于路径参数的 Azure API 管理响应缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71498141/