程式範例

# 用程式讀取 Watch 事件

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

一般使用者可先使用內建事件檢視器。下面供整合人員使用：先在可信任的本機環境設定 WATCH\_URL 與 WATCH\_API\_KEY，前者不含 /viewer/ 或結尾斜線。不要把實際金鑰寫進程式碼。 [先測試連線](https://watch.tensordynamics.org/developers/quickstart?lang=zh)

## 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 與完整參考](https://watch.tensordynamics.org/developers/api-reference?lang=zh)

[處理分頁、錯誤與重試](https://watch.tensordynamics.org/developers/api-behavior?lang=zh)

---
Source: https://watch.tensordynamics.org/developers/examples?lang=zh
More Watch guides: https://watch.tensordynamics.org/llms.txt
