配置 API 缓存信息,缓存 API 的响应,减轻业务系统压力。
关于此任务
API 缓存包含整个后端请求的响应,包括响应头和响应体,所以要求被缓存的 API 的响应头中排除状态类信息,比如 cookie
中的用户态数据。该缓存功能只适合缓存无状态数据。
后端业务系统可以通过在响应头中添加 Pragma: no-cache
告知网关不缓存该次响应。
操作步骤
登录 mPaaS 控制台,在左侧导航栏,点击 移动网关 菜单。
在 API 列表中,选择要配置的 API 名称,点击操作列中的 配置,进入 API 详情页面。
点击 缓存配置 区域的 修改 按钮,配置如下规则:
结果缓存:是否开启缓存。
缓存时间:缓存的存活时间,单位:秒。
缓存键值:用于缓存的键值表达式。点击 修改 定义缓存键值。在弹出的模态框中,填写缓存所需的主键,可以拖曳进行排序。关于键值语法的信息,参见下文的键值语法。
键值语法
支持的语法
当 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