Java
Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα
Η βιβλιοθήκη για Java είναι το com.getlingara:lingara-java στο Maven Central. Απαιτεί Java 17 ή νεότερη και χρησιμοποιεί το εγγενές java.net.http.HttpClient του JDK, με το Jackson για JSON.
Πώς διαβάζεται
- Οι κλήσεις είναι σύγχρονες. Για πολλές ταυτόχρονα, εκτελέστε τες σε virtual threads ή σε έναν executor.
- Μια ροή είναι ένα
EventStream, που είναι ταυτόχροναIterableκαιAutoCloseable: διαβάστε την με έναν βρόχοforμέσα σε try-with-resources. Τα συμβάντα είναι records κάτω από ένα sealed interface, οπότε έναswitchπάνω τους είναι εξαντλητικό. - Για ακύρωση, διακόψτε το νήμα ή καλέστε
close()από άλλο νήμα. Η κλήση τότε ρίχνειCancellationException, που δεν είναι ένα από τα σφάλματα της βιβλιοθήκης. - Τα σφάλματα επεκτείνουν το
LingaraException, μια unchecked εξαίρεση. ΤοretryAfter()επιστρέφει έναOptional<Duration>. - Δημιουργήστε έναν client με
LingaraClient.builder(). Μια κλήση που δεν μεταδίδει ροή δεν έχει χρονικό όριο μέχρι να ορίσετε τοrequestTimeout.
Τα παρακάτω δείγματα προσθέτουν την εξάρτηση, δημιουργούν έναν client, μεταδίδουν σε ροή μια λίστα λεξιλογίου και χειρίζονται ένα σφάλμα.
Java
<dependency>
<groupId>com.getlingara</groupId>
<artifactId>lingara-java</artifactId>
<version>0.1.0-alpha.6</version>
</dependency>Java
import com.getlingara.client.LingaraClient;
LingaraClient client =
LingaraClient.builder()
.clientCredentials(
System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
.build();Java
import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;
VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
for (GenerateVocabularyEvent event : stream) {
if (event instanceof GenerateVocabularyEvent.Item item) {
System.out.println(item.data().getWord() + " " + item.data().getTranslation());
}
}
}Java
try {
client.getUsage();
} catch (LingaraException e) {
if (e instanceof ApiException api) {
// A refusal from the API: status(), code() (stable) and getMessage() (localised).
System.out.println(api.status() + " " + api.code() + " " + api.getMessage());
api.retryAfter().ifPresent(wait -> System.out.println("retry after " + wait));
} else if (e instanceof OAuthException oauth) {
// The token endpoint refused the credentials or the scopes.
System.out.println(oauth.status() + " " + oauth.error() + " " + oauth.description());
} else if (e instanceof MaintenanceException maintenance) {
System.out.println("under maintenance");
maintenance.retryAfter().ifPresent(wait -> System.out.println("retry after " + wait));
} else if (e instanceof TransportException transport) {
// No usable answer: CONNECT, TLS, RESET, TIMEOUT, and so on.
System.out.println("transport: " + transport.kind());
}
}
// An interrupted call throws java.util.concurrent.CancellationException instead.