Skip to content
本页索引

API 静态化

API 静态化核心功能是将动态的 API 数据静态化为 CDN 上的 json 文件(或任意需要的文本格式),消费时从 CDN 读取静态化后的文件即可。

API 静态化根据数据源的不同,分两种情况:KMS Data API 静态化 和 其他 API 静态化。

KMS Data API 静态化

Data API 是 KMS 附属的数据访问服务,它可以支持丰富的查询和过滤参数,而实际生产环境下使用的参数都是相对固定的。为了提高数据访问速度,可以考虑将 Data API 静态化为独立的 json 文件。

而 Data API 的静态化非常简单:

  1. 在模板中心创建一个模板,填写标题和分组

  2. 选择要部署的域名

  3. 填写要静态化的地址,比如 /static/data/[url]

  4. 编写 数据函数

    js
    async 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)
        }
    }
  5. 编写 主模版

    <%- stringContent %>

    其中 <%- %> 是 EJS 语法,表示以原字符串输出; <%= %> 则是会先进行 html 编码后输出

  6. 保存,即可

    自动更新

    模板中心可以从 数据函数 中分析依赖的 KMS 数据,并在配置发生变化时自动启动静态化过程。其中分析的过程是字面量级别的,所以 getConfigData 第一个参数必须是字面量,否则将无法自动收集到依赖。

其他 API 静态化

相对于 KMS Data API 的静态化来说,其他 API 静态化由于不能监听数据源变化,需要通过 Service 服务来主动触发模板渲染:

  1. 在模板中心创建一个模板,填写标题和分组

  2. 选择要部署的域名

  3. 填写要静态化的地址,比如 /static/data/[url]

  4. 编写 数据函数

    js
    async 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)
        }
    }
  5. 编写 主模版

    <%- stringContent %>

    其中 <%- %> 是 EJS 语法,表示以原字符串输出; <%= %> 则是会先进行 html 编码后输出

  6. 保存,返回模板列表

  7. 展开模板的折叠行(模板行的最左侧 + 号)复制 Service Trigger URL 地址

  8. 按照 KMS Service 使用方法 在相应的地方(通常在知道 request 数据变更的相关代码中)通过代码触发模板的渲染工作