Logo GH

SDK 디자인 및 언어 지원

1) SDK 목표 및 성공 기준

개발자 경험 (DX): 직관적 인 API, 언어 간 균일 한 의미론.
신뢰성: 박스에서 타임 아웃/후퇴/dedempotency.
보안: 비밀, 서명, 응용 프로그램, 프로시 환경과의 호환성.
관찰 가능성: 로그, 메트릭, 언어 표준 도구의 흔적.
경제: 최소 출구/CPU, 효과적인 페이지 매김, 배치.
안정성: 엄격한 반주, 이전 버전과의 호환성, LTS 지점.

2) 건축 원칙

1. 얇은 클라이언트, 강력한 계약: 숨겨진 비즈니스 로직없이 프로토콜 (REST/gRPC) 을 통한 SDK 래퍼.
2. 통합 표면: 동일한 개념 (클라이언트, 요청, 응답, 오류, 페이지 네이터, WebhookVerifier).
3. 기본적으로 안전: 합리적인 타임 아웃, 지수 백오프 + 지터, 반복 보호.
4. 설정 레이어링: ENV → 설정 파일 → 생성자 → 메소드 파라미터.
5. 플러그 가능 전송: TP/gRPC는 분리 가능하며 연결 proksi/Phiden과 호환됩니다.
6. 테스트 가능성: 인터페이스/페이크, 종속성 주입, 레코드 재생.
7. 오류 I18n: 머신 '오류 _ 코드' 는 안정적입니다. 메시지는 현지화 할 수 있습니다.
8. 접근성: 적절한 경우 비동기 변형 (일반적으로 'AsyncClient').
9. 보안 우선: 비밀은 필요한 경우 로그, PII 버전, FIPS 호환 암호화 라이브러리에 속하지 않습니다.

3) 지원 테이블 및 기회 패리티

언어미니 버전실행 모델플랫폼/배포상태
타이프 스크립트/자바스크립트노드 18 +async/기다리기npm (ESM + CJS), 데노, 번GA
파이썬3. 9+동기화 + aioPyPI ('동기화 '/' aio'), 휠 매니GA
자바11+동기화메이븐 센트럴, 안드로이드 (옵션)GA
이동1. 21+동기화 (ctx)모듈로 이동GA
.NETnet6. 0+동기화/asyncNuGetGA
PHP 4: P8. 1+동기화작곡가베타
루비3. 0+동기화루비 젬스베타
💡 API 패리티는 자동 생성 된 행렬로 측정됩니다. 엔드 포인트 목록/기능, 릴리스 날짜는 "패리티가 있습니까? ».

4) API 기본 표면 (표준 모델)

공통 엔티티

클라이언트: 전송, 키, 리트레이, 원격 측정 후크 구성.
요청/응답: 유형 안전 모델/DTO, 페이지 매김/커서.
오류: '상태', '오류 _ 코드', 'trace _ id', '검색 가능' 이있는 단일 클래스.
페이지 네이터/아이터: 페이지/커서의 게으른 검색.
WebhookVerifier: HMAC/mTLS 확인, '이벤트 _ id' 로 정리.

미니 예 (타입 스크립트)

ts const client = new GambleHubClient({
apiKey: process. env. GH_API_KEY!,
timeoutMs: 10_000,
retries: { max: 5, strategy: "expo-jitter" }
});

const { items, nextCursor } = await client. reports. list({ from, to, cursor });
for await (const report of client. reports. iter({ from, to })) { /... / }

미니 예 (파이썬, async)

py from gamblehub import AsyncClient, WebhookVerifier

client = AsyncClient(api_key=API_KEY, timeout=10, retries={"max":5})
async for user in client. users. iter(updated_after=ts):
...

verifier = WebhookVerifier(secret=WEBHOOK_SECRET)
if verifier. verify(headers, body): ack()

5) 설정 및 실행 시간

ENV: 'GH _ API _ KEY', 'GH _ ENDPOINT', 'GH _ TIMEOUT _ MS', 'TP _ PROXY/HTTPS _ PROXY', 'GH _ REGEON'.
생성자-오버 라이드 ENV.
통화 당 오버라이드: 메소드 레벨 타임 아웃/리트레이.
인증서/키의 경로, 필요한 경우 CA를 고정합니다.
연결 풀: 계속 살아 있음, TH/2, 동시성 제약.

6) 상자에서 안전

비밀: 기록하지 말고 스택 흔적에 숨기십시오. 편집 ".
서명: 웹 후크 용 HMAC, 'X-Key-ID '/키 회전, "두 키" 활성/다음 지원.
이념성: 쓰기 작업을위한 'Idempotency-Key' 의 투명한 설정 (재시작은 안전 함).
RBAC/Scopes: 범위에 대한 편리한 열거/상수.
PII 정책: 로깅을위한 표준 편집 인터페이스.

7) 신뢰성: 타임 아웃, 후퇴, 지원

기본 시간 초과: 10-15 초; 연결 3-5.
Retrai: 5xx/408/429 ('Redure-After' 존중) 의 경우 지수 백오프 + 지터, 재 시도/시간 제한.
회로 차단기: SDK에서 선택 사항 (또는 타사 lib 권장 사항).

이념적 글쓰기: 키별로 자동 반복; 충돌 → '409를 올립니다. IDEMP _ REPLAY '

8) Pagination, 커서 및 스트리밍

커서/반복자: 게으른 무차별 힘, 일시적인 오류에 대한 자동 반복.
키셋 페이지화: 안정적인 순서 '(업데이트 된 _ at, id)'.
역압: 동시 요청 제한; "async-SDK" - 'async for '/' 채널'.
스트리밍 (사용 가능한 경우): '시퀀스' 에 의한 자동 재 연결 및 중복 제거가있는 SSE/WebSocket/gRPC 스트림.

9) 실수와 계약

단일 계층 구조:
  • 'ApiError' (게 일어 났을 때) (429), 'ValidationError (422)', '세르 베르 오류 (5xx)'.
  • 계정: '상태', '오류 _ 코드', '메시지', 'trace _ id', '검색 가능', '세부 사항'.
  • 모범 사례: 메시지는 사람이 읽을 수 있고 '오류 _ 코드' 는 안정적입니다.

10) 언어 관용구

타이프 스크립트/JS

페이지 매김을위한 약속 기반 + 생성기; ESM + CJS 패킷.
트리 쉐이킹, 최소 폴리 필, 신호 중단 ('AbortController').

파이썬

동기화 + Async (aiohttp/, Px), 컨텍스트 관리자, 'pydantic' 모델 (또는 데이터 클래스).
바퀴가 있으면 바퀴/마코/창; 프록시/NO _ PROXY 지원.

자바

'완전한 미래' (필요한 경우), '자동 폐쇄 가능', '지속 시간', '집행자'.
HTP 클라이언트: 'java. 그물. http '또는 OkHttp; 로그에 대한 SLF4J.

이동

상황의 맥락. 문맥 ',' http. 클라이언트 '튜닝 된 전송, 테스트 인터페이스.
오류 포장 ('fmt. Errorf ("% w", 실수) '), 센티넬 오류 의미론.

.NET

'HttpClientFactory', 'CancellationToken', 'IAsyncEnumerable <T>'.
폴리 정책 (재 시도/회로 차단기).

... PHP/Ruby (PSR-18, Faraday/Net::: HTT) 등의 경우.

11) 로깅, 메트릭, 추적

로그: 레벨 (ERROR/WARN/INFO/DEBUG), 상관 관계 'trace _ id', 민감한 데이터 비활성화

많은 정보를 제공합니다. '요청', '오류 _ 전체 {상태}', '재시도 _ 카운트', '대기 시간 _ ms', '스로틀드 _ total'.
추적: OpenTelemetry 후크 (API 호출, 종점, 상태, 재 시도 속성에 이르기까지).
디버그 모드: 환경 변수 'GH _ SDK _ DEBUG = 1' - 비밀없이 HTP 헤더 인쇄 및 시간.

12) 문서 및 예

빠른 시작 5 분: 조정, 첫 번째 요청, 페이지 매김, 429 처리.
요리 책: 웹 후크 (서명 확인), dememotent 쓰기, 재생.
API 참조: OpenAPI/Protoqua의 Autogen이지만 "수동" 예제가 있습니다.
스니펫: 인기있는 작업을위한 기성품 코드 (파이썬/TS/Java/Go/.NET).

13) 세대 vs 수동 코딩

결합 된 접근 방식: 인체 공학을위한 코드겐 (모델/클라이언트) + 수동 "펜".
템플릿: 균일 한 메소드 이름 ('생성/가져 오기/목록/업데이트/삭제'), 찌르기. 서명.
리겐 후 "디프 호환성" 확인 (CI-gate).

14) 수정, 호환성 및 우울증

SemVer: 소. 속보-전공 만 해당.
안정성 정책: 사소한 릴리스-필드/메소드를 추가하고 계약을 변경하지 마십시오.
비난: 주석/속성 @ adber/Obsolete, 프로세스 당 한 번 런타임 경고, 90 일 이상 창.
LTS 지점: 크리트 픽스의 백 포트 (새로운 기능 없음).

15) 체인 출시 및 공급

CI/CD: 라인터/포머터, 단위 + 통합, 계약 테스트, e2e 대 샌드 박스.
아티팩트 서명: Sigstore/GPG, 릴리스 체크섬.
출판: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems (변경 로그 및 릴리스 노트 포함).
SemVer 게이트: 공개 API의 호환성을 자동 확인합니다 (예: 'apirestary diff').

16) 테스트 (품질 매트릭스)

단위: 모델, 직렬화, 검증, 배상/타임 아웃.
계약: OpenAPI/프로토 타입 체계 (음수/에지 사례) 에 대해 설명합니다.
통합: 대 샌드 박스 (demotency, 429/5xx, webhooks).
하중/담그기: 페이지 매김/스트림, 역압.
퍼즈: 필드/헤더/시간 경계.
Compat-오래된 SDKs는 새로운 API를 제공하고 그 반대도 마찬가지입니다.
연기 팩: CI에서 회귀를 잡는 데 5 분.

17) 원격 측정 및 개인 정보 보호 정책

옵션 선택: PII가없는 집계 된 SDK 메트릭 (버전, 언어, 상태) 모음.
설정: '원격 측정:' 익명 '전체' (기본값은 꺼져 있습니다/익명).
투명성: 무슨 일이 일어날 지, 왜 그런지 문서화; 연결 해제 상자를 확인합시다.

18) 성능 및 FinOps

배칭: 작은 쿼리를 결합하십시오. 한계 RPS; gzip/br.
ETag/If-None-match 캐싱, 조건부 GET.
경제 모델: 모든 것을 메모리에로드하는 대신 게으른 반복자.
한계가있는 동시성: API를 "DDOS" 하지 않도록 'max _ 동시성'.

19) 전형적인 SDK 구성 요소 (골격)

오류 (타이프 스크립트)

ts export class ApiError extends Error {
constructor(
readonly status: number,
readonly errorCode: string,
readonly traceId?: string,
readonly retriable?: boolean,
readonly details?: unknown
) { super(`${status} ${errorCode}`); }
}

페이지 네이터 (파이썬)

py class Paginator(Generic[T]):
def __init__(self, fetch_page):
self._fetch = fetch_page self._cursor = None async def __aiter__(self):
while True:
page = await self._fetch(self._cursor)
for item in page. items:
yield item if not page. has_more: break self._cursor = page. next_cursor

WebhookVerifier (Go)

go func Verify(body []byte, signatureHeader, secret string) bool {
parts:= strings. SplitN(signatureHeader, "=", 2)
mac:= hmac. New(sha256. New, []byte(secret))
mac. Write(body)
expected:= base64. StdEncoding. EncodeToString(mac. Sum(nil))
return hmac. Equal([]byte(parts[1]), []byte(expected))
}

20) 지원, SLA 및 커뮤니티

SDK 별 SLA: 중요한 버그-ETA 수정, 통신 채널, 호환성 매트릭스 (SDK 년도 애플리케이션).
발행 템플릿: 버그/기능/질문, 언어/버전 별 자동 심사.
로드맵/레이블: "좋은 첫 번째 문제", "도움을 원했습니다".

보안 정책: 'SECURITY. 다른 사람들은 그렇게 생각하지 않아요

21) SDK 품질 점검표

  • 단일 모델 오류 ('상태', '오류 _ 코드', 'trace _ id', '검색 가능').
  • 타임 아웃/후퇴/지터, '재생 후' 에 대한 존중.
  • Idempotency 작성, 자동 'Idempotency-Key'.
  • 커서 페이지 매김, 게으른 반복자/스트림.
  • HMAC/mTLS를 사용한 WebhookVerifier 및 중복 제거.
  • ENV/생성자/매개 변수를 통한 설정.
  • 로깅/메트릭/OTel 후크, 비밀이없는 디버그 모드.
  • SemVer, 90 일 이상 감소, LTS 지점.
  • 인기있는 작업에 대한 예와 요리 책을 완성하십시오.
  • CI의 언어 간 기능 패리티 행렬.

22) 구현 계획 (3 회 반복)

1. MVP (2-3 주): 기본 클라이언트, 지정, 3-5 키 끝점, 페이지 매김, 단일 오류 모델, retrai/타임 아웃; TS + 파이썬.
2. 스케일 (3-5 주): Java/Go/.NET, WebhookVerifier, dememotency 쓰기, 원격 측정 후크, OpenAPI에서 모델 생성.
3. Pro (연속): 스트리밍/SSE/gRPC, perf 최적화, LTS 지점, 확장 요리 책, 마이그레이션/감소 도구.

23) 미니 -FAQ

모든 것을 만들거나 손으로 쓰십니까?
모델/클라이언트 및 인체 공학 (페이지 네이터, 리트레이, demempotency, 편리한 서명) 을 수동으로 생성하십시오.

별도의 async-SDK가 필요합니까?
파이썬 - 차이나 ('AsyncClient'); JS에서 - 기본적으로; v.NET/Java-가능한 경우 비동기 호출.

언어의 패리티를 유지하는 방법?
CI의 매트릭스 기능은 "지연되는" 자동보고와 함께 "벨트 별" (TS → Py → Java → Go → .NET) 을 릴리스합니다.

합계

강력한 SDK는 모든 언어에서 동일한 단일 표면, 신뢰할 수있는 채무 불이행 및 예측 가능한 계약입니다. 개발자에게 안전한 설정, 이해할 수있는 오류 모델, 웹 후크의 편리한 페이지 매김 및 검증을 제공하고 고품질 문서와 엄격한 준버로이를 완료하십시오. 그런 다음 통합이 빠르고 지원이 저렴하며 생태계가 지속 가능하고 확장 가능합니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.