TypeScript
Deze pagina is vertaald uit het Engels. Als de twee verschillen, is de Engelse pagina juist. Lees de Engelse pagina
De TypeScript-bibliotheek is het pakket @lingara/api op npm. Het draait op Node.js 22 of hoger, heeft geen runtime-afhankelijkheden en levert typedefinities voor elk verzoek, elk antwoord en elk stream-event.
Waar het draait
Het is een server-side bibliotheek. Er is geen browserbuild, en de client weigert een client secret wanneer hij merkt dat hij in een pagina draait: een client secret in een browser is een gepubliceerd secret, leesbaar voor iedereen die de pagina opent. Roep de API aan vanaf je eigen server en stuur je gebruikers alleen wat ze nodig hebben.
Hoe het leest
- Elke aanroep geeft een promise terug. Geef
{ signal }met eenAbortSignalmee om er een te annuleren; de aanroep wordt dan afgewezen met de eigen reden van het signaal. - Een stream is een async iterable, gelezen met
for await. Hij is lui: het verzoek wordt verstuurd wanneer je om het eerste event vraagt. - Fouten breiden
LingaraErroruit, dus ééninstanceof-controle vangt alle vier. Elke fout bevatretryAfterwanneer de API een wachttijd noemde. - Om je eigen HTTP-stack te gebruiken, geef je een
fetch-functie mee in de opties. De inactiviteitstime-out op streams blijft gelden.
De voorbeelden hieronder installeren het pakket, maken een client aan, streamen een woordenlijst en handelen een fout af.
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;
}
}