Documentation Index
Fetch the complete documentation index at: https://benzinga-2-locadex-parallel-main.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Benzinga TypeScript/JavaScript SDK는 Benzinga API와 상호작용하기 위한 모듈식, 이벤트 기반 인터페이스를 제공합니다. TypeScript로 작성된 이 SDK는 브라우저와 Node.js 환경 모두에서 원활하게 동작하며, 캐싱, 깊은 비교(deep comparison) 및 기타 고급 기능을 포함한 향상된 구현을 제공합니다.
- TypeScript 지원 - 완전한 TypeScript 타입과 인터페이스 제공
- 범용 - 브라우저와 Node.js 환경 모두에서 동작
- 모듈형 아키텍처 - 필요한 모듈만 설치 가능
- 이벤트 기반 - 실시간 데이터를 위한 반응형 프로그래밍 패턴
- 고급 기능 - 내장 캐싱, 깊은 비교, 각종 최적화 기능
- 최신 - async/await를 지원하는 ES6+ 문법
SDK는 모듈형 아키텍처를 사용합니다. 먼저 핵심 세션 모듈을 설치하세요:
npm install @benzinga/session
그다음 필요에 따라 추가 모듈을 설치하세요:
# 예제: 특정 모듈 설치
npm install @benzinga/calendar-data
npm install @benzinga/quotes
npm install @benzinga/news-data
@benzinga/session 모듈은 Benzinga API 인증을 위한 기반을 제공합니다. 다른 모든 모듈은 이 Session 객체에 의존합니다.
import { Session } from '@benzinga/session';
// API 키를 사용하여 세션 초기화
const session = new Session({
apiKey: 'YOUR_API_KEY'
});
Session 객체는 동작을 사용자 정의하기 위한 다양한 구성 옵션을 허용합니다:
const session = new Session({
apiKey: 'YOUR_API_KEY',
environment: 'production', // 또는 'sandbox'
timeout: 30000, // 요청 타임아웃(밀리초 단위)
// 추가 구성 옵션
});
각 Benzinga API 도메인은 별도의 npm 모듈로 패키징됩니다. 이를 통해 다음과 같은 일을 할 수 있습니다:
- 필요한 모듈만 설치
- 번들 크기 축소
- 관심사를 명확히 분리
- 모듈을 독립적으로 업데이트
SDK는 실시간 데이터 스트림 및 업데이트를 처리하기 위해 이벤트 기반 패턴을 사용합니다:
// 예시: 데이터 업데이트 구독
dataManager.subscribe((data) => {
console.log('New data received:', data);
});
// Example: Handle events
dataManager.on('update', (event) => {
console.log('Data updated:', event);
});
SDK에는 다음을 위한 내장 캐싱 메커니즘이 포함되어 있습니다:
- 불필요한 API 호출 감소
- 응답 시간 개선
- 대역폭 사용 최적화
- 오프라인 대체 기능 제공
고급 데이터 비교 기능을 통해 다음을 수행할 수 있습니다:
- 중첩 객체 변경 사항 감지
- 효율적인 상태 관리
- 스마트한 업데이트 트리거
- UI 애플리케이션에서 불필요한 리렌더링 감소
SDK는 각기 다른 API 도메인에 맞춰 특화된 모듈로 구성되어 있습니다.
@benzinga/session - 인증 및 세션 관리 (필수)
@benzinga/calendar-data - 캘린더 이벤트 및 기업 행동
@benzinga/news-data - 뉴스 기사 및 시장 정보
@benzinga/quotes - 실시간 및 지연 시세
@benzinga/fundamentals - 기업 기초 재무 지표 및 재무 데이터
@benzinga/ratings - 애널리스트 등급 및 목표가
@benzinga/options - 옵션 거래 동향 및 분석
@benzinga/transcripts - 실적 발표 콜 녹취록
@benzinga/logos - 기업 로고 및 브랜딩
@benzinga/signals - 거래 시그널 및 지표
이 SDK는 TypeScript로 작성되었으며 완전한 타입 정의를 제공합니다:
import { Session } from '@benzinga/session';
import { CalendarData, DividendEvent } from '@benzinga/calendar-data';
// TypeScript는 자동 완성 및 타입 검사를 제공합니다
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const calendar = new CalendarData(session);
// 타입 안전 API 호출
const dividends: DividendEvent[] = await calendar.getDividends({
dateFrom: '2024-01-01',
dateTo: '2024-12-31',
ticker: 'AAPL'
});
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
// 최신 뉴스 가져오기
const articles = await news.getNews({
pageSize: 10,
displayOutput: 'full'
});
console.log(articles);
import { Session } from '@benzinga/session';
import { QuoteStream } from '@benzinga/quotes';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const quoteStream = new QuoteStream(session);
// 실시간 시세 구독
quoteStream.subscribe(['AAPL', 'MSFT', 'GOOGL'], (quote) => {
console.log('Quote update:', quote);
});
// 완료되면 구독 해제
quoteStream.unsubscribe(['AAPL']);
import { Session } from '@benzinga/session';
import { CalendarData } from '@benzinga/calendar-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const calendar = new CalendarData(session);
// 예정된 실적 조회
const earnings = await calendar.getEarnings({
dateFrom: '2024-01-01',
dateTo: '2024-01-31',
importance: 3 // 높은 중요도만 해당
});
// 배당 정보 조회
const dividends = await calendar.getDividends({
ticker: 'AAPL'
});
import { Session } from '@benzinga/session';
import { Fundamentals } from '@benzinga/fundamentals';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const fundamentals = new Fundamentals(session);
// 회사 프로필 가져오기
const profile = await fundamentals.getCompanyProfile('AAPL');
// 밸류에이션 비율 가져오기
const valuationRatios = await fundamentals.getValuationRatios('AAPL');
// 재무제표 가져오기
const financials = await fundamentals.getFinancials('AAPL');
SDK는 Webpack, Rollup, Vite와 같은 번들러를 사용하는 브라우저 환경에서도 동작합니다.
// React, Vue 또는 Angular 애플리케이션에서
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
export function NewsComponent() {
const session = new Session({ apiKey: process.env.BENZINGA_API_KEY });
const news = new NewsData(session);
// 컴포넌트 로직에서 사용
useEffect(() => {
news.getNews({ pageSize: 5 }).then(articles => {
setNewsData(articles);
});
}, []);
}
try-catch 블록으로 오류를 적절히 처리하세요:
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
try {
const articles = await news.getNews({ pageSize: 10 });
console.log(articles);
} catch (error) {
if (error.code === 'UNAUTHORIZED') {
console.error('잘못된 API 키');
} else if (error.code === 'RATE_LIMIT') {
console.error('속도 제한 초과됨');
} else {
console.error('오류 발생:', error.message);
}
}
페이지네이션 결과를 효율적으로 처리하십시오:
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
// 여러 페이지 가져오기
let page = 0;
let allArticles = [];
while (page < 5) {
const articles = await news.getNews({
page: page,
pageSize: 100
});
if (articles.length === 0) break;
allArticles = allArticles.concat(articles);
page++;
}
console.log(`Fetched ${allArticles.length} articles`);
성능 향상을 위해 내장된 캐싱 기능을 활용하세요:
import { Session } from '@benzinga/session';
import { CalendarData } from '@benzinga/calendar-data';
const session = new Session({
apiKey: 'YOUR_API_KEY',
cache: {
enabled: true,
ttl: 300000 // 5분간 캐시
}
});
const calendar = new CalendarData(session);
// 첫 번째 호출은 API 요청
const earnings1 = await calendar.getEarnings({ ticker: 'AAPL' });
// 두 번째 호출은 캐시된 데이터 사용(TTL 내인 경우)
const earnings2 = await calendar.getEarnings({ ticker: 'AAPL' });
애플리케이션 전역에서 재사용할 세션 인스턴스를 하나만 생성하세요:
// session.ts
export const globalSession = new Session({ apiKey: process.env.BENZINGA_API_KEY });
// 다른 파일들에서
import { globalSession } from './session';
const news = new NewsData(globalSession);
API 키를 환경 변수에 안전하게 저장하세요.
// .env 파일
BENZINGA_API_KEY=your_api_key_here
// 코드 내
const session = new Session({
apiKey: process.env.BENZINGA_API_KEY
});
타입 안전한 API 상호 작용을 위해 TypeScript를 활용하십시오:
import type { NewsArticle, NewsParams } from '@benzinga/news-data';
const params: NewsParams = {
pageSize: 10,
displayOutput: 'full',
ticker: 'AAPL'
};
const articles: NewsArticle[] = await news.getNews(params);
프로덕션 환경에서는 에러 바운더리를 구현하십시오.
const safeApiCall = async (fn: () => Promise<any>) => {
try {
return await fn();
} catch (error) {
console.error('API Error:', error);
// 오류 추적 서비스에 로그 기록
return null;
}
};
const articles = await safeApiCall(() => news.getNews({ pageSize: 10 }));
특정 모듈에 대한 자세한 내용은 각 패키지의 README를 참조하십시오:
@benzinga/session - 핵심 인증 및 구성
@benzinga/calendar-data - calendar 이벤트 API
@benzinga/news-data - 뉴스 및 기사 API
@benzinga/quotes - 실시간 시세 API
@benzinga/fundamentals - 기초 재무 지표 및 재무 정보 API
기술 지원이나 API 키 발급이 필요하면 cloud.benzinga.com에서 Benzinga에 문의하세요.
Benzinga JavaScript SDK는 오픈 소스입니다. 누구나 기여하실 수 있습니다. 자세한 내용은 GitHub 저장소를 방문하세요.