本文主要介绍边缘程序(ER)的内置API。

Constructor

传入NameSpace(存储空间名称)创建一个边缘KV实例对象。

  • 定义
    const edgeKv = new EdgeKV({ namespace: "ns"});
  • 参数说明
    参数说明
    namespaceNameSpace是您在控制台创建的存储空间名称,可在存储空间列表查看。

get

从NameSpace(存储空间)里读取数据。

  • 定义
    get(key[, {type: “type”}])
  • 参数说明
    参数说明
    key类型为string
    type类型可为以下任意一种:
    • stream(默认类型):ReadableStream的形式,返回流式的内容。
    • text:返回字符串。
    • json:将存储的JSON内容转换成一个Object后再返回。
    • arrayBuffer:返回二进制数据。
  • 返回值
    返回一个Promise(可以调用await来确保操作完成):
    • 如果key不存在,会返回undefined。
    • 如果发生异常导致get失败,reject成error异常。
  • 示例代码
    addEventListener("fetch", event => {
      event.respondWith(handleRequest(event.request))
    })
    
    async function handleRequest(request) {
      try {
        const edgeKV = new EdgeKV({ namespace: "ns" });
        let getType = { type: "text" };
        let value = await edgeKV.get("key", getType);
        if (value === undefined) {
          return "EdgeKV get: key not found";
        } else {
          return new Response(value);
        }
      } catch (e) {
        return "EdgeKV get error" + e;
      }
    }

delete

从NameSpace(存储空间)里删除Key及其对应的Value数据。

  • 定义
    delete(key)
  • 参数说明
    参数说明
    key需要删除的Key,类型为string
  • 返回值
    返回一个Promise(可以调用await来确保操作完成):
    • 如果删除成功,resolve成true。
    • 如果删除失败,resolve成false。
    • 如果发生异常导致delete失败,reject成error异常。
  • 示例代码
    addEventListener("fetch", event => {
      event.respondWith(handleRequest(event.request))
    })
    
    async function handleRequest() {
      try {
        const edgeKV = new EdgeKV({ namespace: "ns" });
        let resp = await edgeKV.delete("key");
        if (resp) {
          return "EdgeKV delete success";
        } else {
          return "EdgeKV delete failed";
        }
      }
      catch (e) {
        return "EdgeKV delete error" + e;
      }
    }

JS异常处理

发生异常时,会返回JS错误,如果您希望忽略此错误,需要主动在JS代码里对错误进行捕获,否则会返回599状态码并自动降级访问兜底的源站重试(兜底的源站是域名接入CDN/DCDN时配置的源站)。