TypeScript
این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم فرق داشته باشند، صفحهٔ انگلیسی درست است. صفحهٔ انگلیسی را بخوانید
کتابخانه TypeScript همان بسته @lingara/api در npm است. روی Node.js 22 یا بالاتر اجرا میشود، هیچ وابستگی وقت اجرا ندارد، و برای هر درخواست، جواب و رویداد جریان تعریف نوع همراه دارد.
کجا اجرا میشود
این یک کتابخانه سمت سرور است. نسخهای برای براوزر وجود ندارد، و کلاینت وقتی خود را داخل یک صفحه ویب ببیند رمز کلاینت را قبول نمیکند: رمز کلاینت در براوزر رمزی نشرشده است که هر کسی صفحه را باز کند میتواند بخواند. API را از سرور خودتان صدا بزنید و تنها چیزی را که کاربران شما ضرورت دارند برایشان بفرستید.
در عمل چطور است
- هر فراخوانی یک Promise برمیگرداند. برای لغو یک فراخوانی،
{ signal }را همراه یکAbortSignalبفرستید؛ آنگاه فراخوانی با دلیل خود همان سیگنال رد میشود. - جریان یک تکرارپذیر غیرهمزمان است که با
for awaitخوانده میشود. تنبل است: درخواست وقتی فرستاده میشود که اولین رویداد را بخواهید. - خطاها از
LingaraErrorمیراث میبرند، پس یک بررسیinstanceofهر چهار را میگیرد. هر کدام وقتی API مدت انتظاری گفته باشدretryAfterرا با خود دارد. - برای استفاده از پشته HTTP خودتان، یک تابع
fetchدر گزینهها بدهید. مهلت بیکاری جریانها باز هم تطبیق میشود.
نمونههای پایین بسته را نصب میکنند، یک کلاینت میسازند، لستی از لغات را جریانی دریافت میکنند و یک خطا را رسیدگی میکنند.
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;
}
}