Java
Bu sayfa İngilizceden çevrilmiştir. İkisi arasında fark varsa İngilizce sayfa doğrudur. İngilizce sayfayı oku
Java kütüphanesi, Maven Central üzerindeki com.getlingara:lingara-java paketidir. Java 17 veya üstünü gerektirir; JDK’nın kendi java.net.http.HttpClient sınıfını, JSON için de Jackson’ı kullanır.
Kullanımı nasıldır
- Çağrılar eşzamanlıdır (senkron). Aynı anda çok sayıda çağrı için onları sanal iş parçacıklarında veya bir executor üzerinde çalıştırın.
- Bir akış bir
EventStream’dir; hemIterablehem deAutoCloseablearayüzünü uygular: onu try-with-resources içinde birfordöngüsüyle okuyun. Olaylar sealed bir arayüz altındaki record’lardır, bu yüzden onlar üzerindeki birswitchtüm durumları kapsar. - İptal etmek için iş parçacığını kesintiye uğratın ya da başka bir iş parçacığından
close()çağırın. Çağrı bu durumdaCancellationExceptionfırlatır; bu, kütüphanenin hatalarından biri değildir. - Hatalar, denetlenmeyen (unchecked) bir istisna olan
LingaraExceptionsınıfını genişletir.retryAfter()birOptional<Duration>döndürür. LingaraClient.builder()ile bir istemci oluşturun. Akış kullanmayan bir çağrının, sizrequestTimeoutayarlayana kadar zaman aşımı yoktur.
Aşağıdaki örnekler bağımlılığı ekler, bir istemci oluşturur, bir kelime listesini akış hâlinde alır ve bir hatayı işler.
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.