Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Web uygulaması
Dil: Türkçe

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; hem Iterable hem de AutoCloseable arayüzünü uygular: onu try-with-resources içinde bir for döngüsüyle okuyun. Olaylar sealed bir arayüz altındaki record’lardır, bu yüzden onlar üzerindeki bir switch tü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 durumda CancellationException fırlatır; bu, kütüphanenin hatalarından biri değildir.
  • Hatalar, denetlenmeyen (unchecked) bir istisna olan LingaraException sınıfını genişletir. retryAfter() bir Optional<Duration> döndürür.
  • LingaraClient.builder() ile bir istemci oluşturun. Akış kullanmayan bir çağrının, siz requestTimeout ayarlayana 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.

Bu sayfanın sarmaladıkları