本文主要介紹邊緣程序(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時配置的源站)。