Lingara Lingara 문서 학습 가이드 API 라이브러리 앱 만들기 웹 앱
언어: 한국어

TypeScript

이 페이지는 영어에서 번역되었습니다. 두 내용이 다를 경우 영어 페이지가 정확합니다. 영어 페이지 읽기

TypeScript 라이브러리는 npm의 @lingara/api 패키지입니다. Node.js 22 이상에서 실행되고, 런타임 의존성이 없으며, 모든 요청, 응답, 스트림 이벤트에 대한 타입 정의를 함께 제공합니다.

실행 환경

서버 측 라이브러리입니다. 브라우저용 빌드는 없으며, 클라이언트는 자신이 페이지 안에서 실행되고 있음을 감지하면 클라이언트 시크릿을 거부합니다. 브라우저에 있는 클라이언트 시크릿은 공개된 시크릿이며, 페이지를 여는 누구나 읽을 수 있기 때문입니다. API는 여러분의 서버에서 호출하고, 사용자에게는 필요한 것만 보내세요.

사용 방식

  • 모든 호출은 Promise를 반환합니다. 호출을 취소하려면 { signal }에 AbortSignal을 담아 전달하세요. 그러면 호출은 시그널 자체의 사유로 거부됩니다.
  • 스트림은 비동기 이터러블이며 for await로 읽습니다. 지연 실행되므로, 첫 이벤트를 요청할 때 요청이 전송됩니다.
  • 오류는 LingaraError를 확장하므로, 한 번의 instanceof 검사로 네 가지를 모두 잡을 수 있습니다. API가 대기 시간을 알려 주면 각 오류에 retryAfter가 담깁니다.
  • 자체 HTTP 스택을 사용하려면 옵션에 fetch 함수를 전달하세요. 이 경우에도 스트림의 유휴 제한 시간은 그대로 적용됩니다.

아래 샘플은 패키지를 설치하고, 클라이언트를 만들고, 어휘 목록을 스트리밍하고, 오류를 처리합니다.

TypeScript

npm install @lingara/api@0.1.0-alpha.6

TypeScript

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;
  }
}

이 페이지가 감싸는 것