Lingara Lingara 說明文件 學習指南 API 程式庫 App 建立 網頁版
語言: 粵語

TypeScript

呢頁係由英文翻譯過嚟嘅。如果兩個版本有出入,以英文頁為準。 睇英文頁

TypeScript 函式庫係 npm 上面嘅 @lingara/api 套件。佢喺 Node.js 22 或者更新嘅版本上面行,冇執行期相依套件,而且為每個請求、回應同串流事件都提供型別定義。

喺邊度行

佢係一個伺服器端函式庫。佢冇瀏覽器版本,而且用戶端一發現自己喺網頁入面,就會拒絕收用戶端密鑰:擺喺瀏覽器入面嘅用戶端密鑰就等於公開咗嘅密鑰,任何人打開個網頁都睇到。請喺你自己嘅伺服器呼叫 API,淨係將用戶需要嘅嘢傳畀佢哋。

用起嚟點樣

  • 每個呼叫都會回傳一個 promise。傳 { signal } 再加一個 AbortSignal 就可以取消個呼叫;咁個呼叫就會用嗰個 signal 自己嘅原因被拒絕。
  • 串流係一個非同步可迭代物件,用 for await 讀。佢係惰性嘅:要等你要第一個事件嗰陣,請求先會送出。
  • 錯誤繼承自 LingaraError,所以一次 instanceof 檢查就可以捉晒全部四種。如果 API 講咗要等幾耐,每個錯誤都會帶住 retryAfter。
  • 想用你自己嘅 HTTP 堆疊,就喺選項入面傳一個 fetch 函式。串流嘅閒置逾時照樣適用。

下面嘅範例會安裝套件、建立用戶端、用串流攞一份詞彙清單,同埋處理錯誤。

TypeScript

npm install @lingara/api@0.1.0-alpha.6

TypeScript

import { Lingara } from "@lingara/api";

const client = new Lingara({
  clientId: process.env.LINGARA_CLIENT_ID!,
  clientSecret: process.env.LINGARA_CLIENT_SECRET!,
});

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

TypeScript

import { ApiError, MaintenanceError, OAuthError, TransportError } from "@lingara/api";

try {
  await client.getUsage();
} catch (e) {
  if (e instanceof ApiError) {
    // A refusal from the API: e.status, e.code (stable) and e.message (localised).
    console.error(e.status, e.code, e.message, e.retryAfter ?? "");
  } else if (e instanceof OAuthError) {
    // The token endpoint refused the credentials or the scopes.
    console.error(e.status, e.error, e.description ?? "");
  } else if (e instanceof MaintenanceError) {
    console.error("under maintenance; retry after", e.retryAfter ?? "a while");
  } else if (e instanceof TransportError) {
    // No usable answer: connect, tls, reset, timeout, and so on.
    console.error("transport:", e.kind);
  } else {
    throw e;
  }
}

呢頁包裝咗乜嘢