Lingara Lingara Tài liệu Cẩm nang API Thư viện Ứng dụng Tạo Ứng dụng web
Ngôn ngữ: Tiếng Việt

Java

Trang này được dịch từ tiếng Anh. Nếu hai bản khác nhau, trang tiếng Anh là bản đúng. Đọc trang tiếng Anh

Thư viện Java là com.getlingara:lingara-java trên Maven Central. Thư viện cần Java 17 trở lên, dùng java.net.http.HttpClient có sẵn của JDK, và dùng Jackson cho JSON.

Cách sử dụng

  • Các lệnh gọi là đồng bộ. Để chạy nhiều lệnh gọi cùng lúc, hãy chạy chúng trên luồng ảo hoặc một executor.
  • Luồng sự kiện là một EventStream, vừa là Iterable vừa là AutoCloseable: hãy đọc nó bằng vòng lặp for bên trong try-with-resources. Các sự kiện là record thuộc một sealed interface, nên một câu lệnh switch trên chúng sẽ bao quát mọi trường hợp.
  • Để hủy, hãy ngắt luồng thực thi hoặc gọi close() từ một luồng thực thi khác. Khi đó lệnh gọi ném ra CancellationException, vốn không thuộc các lỗi của thư viện.
  • Các lỗi kế thừa LingaraException, một ngoại lệ không kiểm tra. retryAfter() trả về một Optional<Duration>.
  • Tạo máy khách bằng LingaraClient.builder(). Một lệnh gọi không phát trực tuyến sẽ không có thời gian chờ cho đến khi bạn đặt requestTimeout.

Các mẫu dưới đây thêm phụ thuộc, tạo máy khách, phát trực tuyến một danh sách từ vựng và xử lý lỗi.

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.

Những gì trang này bao bọc