Appearance
API 静态化
API 静态化核心功能是将动态的 API 数据静态化为 CDN 上的 json 文件(或任意需要的文本格式),消费时从 CDN 读取静态化后的文件即可。
API 静态化根据数据源的不同,分两种情况:KMS Data API 静态化 和 其他 API 静态化。
KMS Data API 静态化
Data API 是 KMS 附属的数据访问服务,它可以支持丰富的查询和过滤参数,而实际生产环境下使用的参数都是相对固定的。为了提高数据访问速度,可以考虑将 Data API 静态化为独立的 json 文件。
而 Data API 的静态化非常简单:
在模板中心创建一个模板,填写标题和分组
选择要部署的域名
填写要静态化的地址,比如
/static/data/[url]
编写
数据函数
jsasync function main(getConfigData, request, utils) { // 通过 getConfigData 可以直接获取 KMS 配置中心的数据 // 第一个参数是数据 Key 或者 别名 // 第二个参数是数据过滤配置,等同于数据API的参数 const list = await getConfigData("key-or-alias", { pure: "items", f: "data", }) return { url: "my-static-data.json", stringContent: JSON.stringify(list) } }
编写
主模版
<%- stringContent %>
其中 <%- %> 是 EJS 语法,表示以原字符串输出; <%= %> 则是会先进行 html 编码后输出
保存,即可
自动更新
模板中心可以从
数据函数
中分析依赖的 KMS 数据,并在配置发生变化时自动启动静态化过程。其中分析的过程是字面量级别的,所以getConfigData
第一个参数必须是字面量,否则将无法自动收集到依赖。
其他 API 静态化
相对于 KMS Data API 的静态化来说,其他 API 静态化由于不能监听数据源变化,需要通过 Service 服务来主动触发模板渲染:
在模板中心创建一个模板,填写标题和分组
选择要部署的域名
填写要静态化的地址,比如
/static/data/[url]
编写
数据函数
jsasync function main(getConfigData, request, utils) { const url = "http://my.site/path/to/api" const params = { name: "test" } const headers = { "x-token": "xxxxx" } // params 和 headers 都是选填 // 如果仅仅需要 headers 可以这么写 await request(url, null, headers) // request 一定要处理 catch 否则请求失败将会导致静态化失败 const response = await request(url, params, headers) .catch(() => { // 可以在 catch 中返回格式一致的默认值 // 具体返回内容需要编写函数时自行决定 return { data: [] } }); return { url: "my-static-data.json", stringContent: JSON.stringify(response.data) } }
编写
主模版
<%- stringContent %>
其中 <%- %> 是 EJS 语法,表示以原字符串输出; <%= %> 则是会先进行 html 编码后输出
保存,返回模板列表
展开模板的折叠行(模板行的最左侧 + 号)复制
Service Trigger
URL 地址按照 KMS Service 使用方法 在相应的地方(通常在知道 request 数据变更的相关代码中)通过代码触发模板的渲染工作