TypeScript
Halaman ini diterjemahkan dari bahasa Inggris. Jika keduanya berbeda, halaman bahasa Inggris yang benar. Baca halaman bahasa Inggris
Pustaka TypeScript adalah paket @lingara/api di npm. Pustaka ini berjalan di Node.js 22 atau lebih baru, tidak punya dependensi runtime, dan menyertakan definisi tipe untuk setiap permintaan, respons, dan event stream.
Tempat pustaka ini berjalan
Ini adalah pustaka sisi server. Tidak ada build untuk peramban, dan klien menolak secret klien ketika mendapati dirinya berada di dalam halaman web: secret klien di peramban adalah secret yang sudah dipublikasikan, dapat dibaca oleh siapa pun yang membuka halaman itu. Panggil API dari server Anda sendiri dan kirimkan kepada pengguna hanya apa yang mereka butuhkan.
Cara pemakaiannya
- Setiap panggilan mengembalikan promise. Berikan
{ signal }dengan sebuahAbortSignaluntuk membatalkannya; panggilan kemudian ditolak dengan alasan milik signal itu sendiri. - Stream adalah async iterable, dibaca dengan
for await. Stream bersifat lazy: permintaan dikirim saat Anda meminta event pertama. - Error merupakan turunan
LingaraError, sehingga satu pemeriksaaninstanceofmenangkap keempatnya. Masing-masing membawaretryAfterjika API menyebutkan waktu tunggu. - Untuk memakai stack HTTP Anda sendiri, berikan fungsi
fetchdi dalam opsi. Batas waktu diam pada stream tetap berlaku.
Contoh di bawah ini memasang paket, membuat klien, men-stream daftar kosakata, dan menangani error.
TypeScript
npm install @lingara/api@0.1.0-alpha.6TypeScript
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;
}
}