Lingara Lingara المستندات أدلة التعلّم API المكتبات التطبيقات البناء تطبيق الويب
اللغة: العربية

TypeScript

هذه الصفحة مترجمة من الإنجليزية. إذا اختلفت النسختان، فالصفحة الإنجليزية هي الصحيحة. اقرأ الصفحة الإنجليزية

مكتبة TypeScript هي الحزمة @lingara/api على npm. تعمل على Node.js 22 أو أحدث، وليست لها أي اعتماديات وقت التشغيل، وتأتي مع تعريفات أنواع لكل طلب واستجابة وحدث تدفق.

أين تعمل

إنها مكتبة لجهة الخادم. لا يوجد إصدار للمتصفح، ويرفض العميل سر العميل عندما يجد نفسه داخل صفحة ويب: فسر العميل في المتصفح سرٌّ منشور، يقرؤه كل من يفتح الصفحة. استدعِ الـ API من خادمك الخاص وأرسل لمستخدميك ما يحتاجونه فقط.

كيف تبدو في الاستخدام

  • كل استدعاء يعيد Promise. مرّر { signal } مع AbortSignal لإلغاء أحدها؛ عندها يُرفض الاستدعاء بالسبب الخاص بالإشارة نفسها.
  • التدفق كائن قابل للتكرار غير المتزامن، يُقرأ باستخدام for await. وهو كسول: يُرسَل الطلب عندما تطلب الحدث الأول.
  • ترث الأخطاء من LingaraError، لذا يلتقط فحص instanceof واحد الأربعة جميعًا. يحمل كل منها retryAfter عندما يحدد الـ API مدة انتظار.
  • لاستخدام مكدّس 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;
  }
}

ما تغلّفه هذه الصفحة