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

关于此任务

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

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

操作步骤

  1. 登录 mPaaS 控制台,在左侧导航栏,点击 移动网关 菜单。

  2. 在 API 列表中,选择要配置的 API 名称,点击操作列中的 配置,进入 API 详情页面。

  3. 点击 缓存配置 区域的 修改 按钮,配置如下规则:

    • 结果缓存:是否开启缓存。

    • 缓存时间:缓存的存活时间,单位:秒。

    • 缓存键值:用于缓存的键值表达式。点击 修改 定义缓存键值。在弹出的模态框中,填写缓存所需的主键,可以拖曳进行排序。关于键值语法的信息,参见下文的键值语法。

键值语法

支持的语法

当 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

代码示例

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

URL:/json.htm?tenantId=boo

Header:
Content-Type:application/json
opt:com.mobile.info.get   
workspaceId:default       
appId:B2D553102
cookie:JSESSIONID=abcd;traceId=trace1000

Body: 
[
    {
        "key": "1234",
        "locations": [
            "beijing",
            "shanghai"
        ],
        "language": "zh-Hans",
        "unit": "c"
    },
    {
        "demo": {
            "name": "nick"
        }
    }
]

如下显示表达式的示例:

$.header.appId = B2D553102
$.cookie.traceId = trace1000
$.http_qs.tenantId = boo
$[0].key = 1234
$[0].locations[1] = shanghai
$[1].demo.name = nick