Created
August 4, 2020 11:10
-
-
Save jochenvw/2ed51085b5f77f2b18da3a2b9fb61ffb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- Custom caching policy for on HTTP POST for Azure API Management: | |
1. Policy looks in the Request body - 'cacheKey' property which then used as cache key. | |
Expected values are: <null>, ALL or NOEXPIRED | |
Defaults to ALL in case <null> | |
2. Cache expiration set to 60 seconds/1 minute | |
!--> | |
<policies> | |
<inbound> | |
<base /> | |
<!-- CACHING: checks for cacheKey property in message body !--> | |
<set-variable name="cacheKey" value="@(context.Request.Body?.As<JObject>(preserveContent: true)["cacheKey"]?.ToString() ?? "ALL")" /> | |
<cache-lookup-value key="@((string)context.Variables["cacheKey"])" variable-name="cachedResponseValue" /> | |
<choose> | |
<when condition="@(context.Variables.ContainsKey("cachedResponseValue"))"> | |
<return-response> | |
<set-header name="Content-Type" exists-action="override">application/json</set-header> | |
<set-body>@((string)context.Variables["cachedResponseValue"])</set-body> | |
</return-response> | |
</when> | |
</choose> | |
</inbound> | |
<backend> | |
<base /> | |
</backend> | |
<outbound> | |
<base /> | |
<set-variable name="responseValue" value="@(context.Response.Body.As<string>(preserveContent: true))" /> | |
<cache-store-value key="@((string)context.Variables["cacheKey"])" value="@((string)context.Variables["responseValue"])" duration="60" /> | |
</outbound> | |
<on-error> | |
<base /> | |
</on-error> | |
</policies> | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment