TypeScript
Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα
Η βιβλιοθήκη για TypeScript είναι το πακέτο @lingara/api στο npm. Τρέχει σε Node.js 22 ή νεότερο, δεν έχει εξαρτήσεις χρόνου εκτέλεσης και περιλαμβάνει ορισμούς τύπων για κάθε αίτημα, απάντηση και συμβάν ροής.
Πού τρέχει
Είναι βιβλιοθήκη για την πλευρά του server. Δεν υπάρχει έκδοση για πρόγραμμα περιήγησης, και ο client αρνείται ένα client secret όταν διαπιστώνει ότι βρίσκεται μέσα σε σελίδα: ένα client secret σε πρόγραμμα περιήγησης είναι δημοσιευμένο μυστικό, αναγνώσιμο από οποιονδήποτε ανοίγει τη σελίδα. Καλέστε το API από τον δικό σας server και στείλτε στους χρήστες σας μόνο ό,τι χρειάζονται.
Πώς διαβάζεται
- Κάθε κλήση επιστρέφει ένα promise. Περάστε
{ signal }με έναAbortSignalγια να ακυρώσετε μία· η κλήση τότε απορρίπτεται με τον δικό λόγο του σήματος. - Μια ροή είναι async iterable και διαβάζεται με
for await. Είναι οκνηρή: το αίτημα αποστέλλεται όταν ζητήσετε το πρώτο συμβάν. - Τα σφάλματα επεκτείνουν το
LingaraError, οπότε ένας έλεγχοςinstanceofπιάνει και τα τέσσερα. Το καθένα περιέχειretryAfterόταν το API όρισε αναμονή. - Για να χρησιμοποιήσετε τη δική σας στοίβα HTTP, περάστε μια συνάρτηση
fetchστις επιλογές. Το χρονικό όριο αδράνειας στις ροές εξακολουθεί να ισχύει.
Τα παρακάτω δείγματα εγκαθιστούν το πακέτο, δημιουργούν έναν client, μεταδίδουν σε ροή μια λίστα λεξιλογίου και χειρίζονται ένα σφάλμα.
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;
}
}