Watch 0.39 API v1

讀取 Watch 事件與串接系統

程式範例

用程式讀取 Watch 事件

不需要安裝 Watch SDK。以下範例只讀取事件,使用 Watch 顯示的網址及 events:read 金鑰。

一般使用者可先使用內建事件檢視器。下面供整合人員使用:先在可信任的本機環境設定 WATCH_URL 與 WATCH_API_KEY,前者不含 /viewer/ 或結尾斜線。不要把實際金鑰寫進程式碼。 先測試連線

Python 3:不需額外套件

import json
import os
import urllib.request

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

base = os.environ["WATCH_URL"].rstrip("/")
key = os.environ["WATCH_API_KEY"]
request = urllib.request.Request(
    base + "/v1/events?limit=10",
    headers={"Authorization": "Bearer " + key},
)
opener = urllib.request.build_opener(
    urllib.request.ProxyHandler({}), NoRedirect()
)
with opener.open(request, timeout=10) as response:
    result = json.load(response)
    print("HTTP", response.status, "events:", len(result["data"]))

JavaScript:在可信任的後端執行

此範例需要支援 fetch 的 JavaScript 執行環境。不要將金鑰放入公開網頁的前端程式。

export async function readEvents(baseUrl, apiKey) {
  const url = new URL(baseUrl);
  url.pathname = url.pathname.endsWith("/") ? url.pathname.slice(0, -1) : url.pathname;
  url.pathname += "/v1/events";
  url.search = "?limit=10";
  url.hash = "";
  const response = await fetch(url, {
    method: "GET",
    redirect: "error",
    signal: AbortSignal.timeout(10000),
    headers: { Authorization: "Bearer " + apiKey },
  });
  if (!response.ok) throw new Error("Watch HTTP " + response.status);
  return response.json();
}

const result = await readEvents(process.env.WATCH_URL, process.env.WATCH_API_KEY);
console.log("Events:", result.data.length);

Windows PowerShell

$Headers = @{ Authorization = "Bearer $env:WATCH_API_KEY" }
(Invoke-WebRequest -UseBasicParsing -TimeoutSec 10 -MaximumRedirection 0 -Headers $Headers -Uri "$env:WATCH_URL/v1/events?limit=1").StatusCode

確認結果

HTTP 200 或成功取得 JSON 表示網址與權限可用。事件數為 0 也屬成功;需要事件內容時,程式可讀取 result.data。401 請核對金鑰,403 請管理員確認權限與允許的區域網路。

以 OpenAPI 產生用戶端

也可下載公開 OpenAPI,交給你使用的客戶端產生工具。產生後確認服務網址是自己的 Watch,並只保留需要的事件讀取功能。 OpenAPI 與完整參考

處理分頁、錯誤與重試