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.6TypeScript
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;
}
}