TypeScript
Diese Seite ist aus dem Englischen übersetzt. Wenn die beiden voneinander abweichen, ist die englische Seite maßgeblich. Englische Seite lesen
Die TypeScript-Bibliothek ist das Paket @lingara/api auf npm. Sie läuft unter Node.js 22 oder neuer, hat keine Laufzeitabhängigkeiten und liefert Typdefinitionen für jede Anfrage, jede Antwort und jedes Stream-Event mit.
Wo sie läuft
Es ist eine serverseitige Bibliothek. Es gibt keinen Browser-Build, und der Client lehnt ein Client-Secret ab, wenn er feststellt, dass er in einer Webseite läuft: Ein Client-Secret im Browser ist ein veröffentlichtes Secret, lesbar für jeden, der die Seite öffnet. Rufen Sie die API von Ihrem eigenen Server aus auf und senden Sie Ihren Nutzern nur das, was sie brauchen.
Wie sie sich liest
- Jeder Aufruf gibt ein Promise zurück. Übergeben Sie
{ signal }mit einemAbortSignal, um einen abzubrechen; der Aufruf wird dann mit dem eigenen Grund des Signals abgelehnt. - Ein Stream ist ein asynchrones Iterable, gelesen mit
for await. Er ist lazy: Die Anfrage wird gesendet, wenn Sie das erste Event anfordern. - Fehler erweitern
LingaraError, sodass eine einzigeinstanceof-Prüfung alle vier abfängt. Jeder enthältretryAfter, wenn die API eine Wartezeit genannt hat. - Um Ihren eigenen HTTP-Stack zu verwenden, übergeben Sie in den Optionen eine
fetch-Funktion. Das Leerlauf-Timeout für Streams gilt weiterhin.
Die folgenden Beispiele installieren das Paket, erstellen einen Client, streamen eine Vokabelliste und behandeln einen Fehler.
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;
}
}