全部产品

API 缓存

更新时间:2020-06-04 14:50:11

配置 API 缓存信息,缓存 API 的响应,减轻业务系统压力。

关于此任务

API 缓存包含整个后端请求的响应,包括响应头和响应体,所以要求被缓存的 API 的响应头中排除状态类信息,比如 cookie 中的用户态数据。该缓存功能只适合缓存无状态数据。

后端业务系统可以通过在响应头中添加 Pragma: no-cache 告知网关不缓存该次响应。

操作步骤

  1. 登录 mPaaS 控制台,在左侧导航栏,点击 移动网关
  2. 在 API 列表中,选择要配置的 API 名称,点击操作列中的 配置,进入 API 详情页面。
  3. 点击 缓存配置 区域的 修改 按钮,配置如下规则:image.png | left | 747x95
    • 结果缓存:是否开启缓存。
    • 缓存时间:缓存的存活时间,单位:秒。
    • 缓存键值:用于缓存的键值表达式。点击 修改 定义缓存键值。在弹出的模态框中,填写缓存所需的主键,可以拖曳进行排序。关于键值语法的信息,参见本文的 键值语法image.png | left | 612x342

键值语法

支持的语法

当 API 请求到达网关后,网关会根据键值配置获取相应的数据,作为缓存的键值,其语法如下:

语法 描述
$ 根对象,例如:$.bar
[num] 数组访问,其中 num 是数字。例如:$[0].bar.foos[1].name
. 属性访问,例如:$.bar
[‘key’] 属性访问,例如:$[‘bar’]
$.header API 请求头对象,用于获取请求头中的字段,例如:$.header.remote_addr
$.cookie API 请求 cookie 对象,用于获取 cookie 中的值,例如:$.cookie.session_id
$.http_body 后端为 HTTP 类型的请求体对象,用于获取请求体中的字段,例如:$.http_body.name
$.http_qs 后端为 HTTP 类型的请求参数对象,用于获取请求参数,例如:$.http_qs.name

代码示例

以如下请求数据为例,从请求报文中获取对象:

  1. URL:/json.htm?tenantId=boo
  2. Header:
  3. Content-Type:application/json
  4. opt:com.mobile.info.get
  5. workspaceId:default
  6. appId:B2D553102
  7. cookie:JSESSIONID=abcd;traceId=trace1000
  8. Body:
  9. [
  10. {
  11. "key": "1234",
  12. "locations": [
  13. "beijing",
  14. "shagnhai"
  15. ],
  16. "language": "zh-Hans",
  17. "unit": "c"
  18. },
  19. {
  20. "demo": {
  21. "name": "nick"
  22. }
  23. }
  24. ]

如下显示表达式的示例:

  1. $.header.appId = B2D553102
  2. $.cookie.traceId = trace1000
  3. $.http_qs.tenantId = boo
  4. $[0].key = 1234
  5. $[0].locations[1] = shagnhai
  6. $[1].demo.name = nick