Logo GH

SDK дизайн және тілдерді қолдау

1) SDK мақсаттары және табыс критерийлері

Developer Experience (DX): интуитивті API, тілдер арасындағы бірыңғай семантика.
Сенімділік: «қораптан» таймауттар/ретрациялар/икемділік.
Қауіпсіздік: құпиялар, қолтаңбалар, TLS, proksi/企业 орталармен үйлесімділік.
Бақылау қабілеті: логи, метрика, тілге арналған стандартты құралдардағы трассалар.
Экономика: минимум egress/CPU, тиімді пагинация, батчи.
Тұрақтылық: қатаң semver, кері үйлесімділік, LTS-тармақтары.

2) Сәулет қағидаттары

1. Thin client, strong contracts: SDK жасырын бизнес-логикасыз хаттамаға (REST/gRPC) орау.
2. Unified surface: бірдей ұғымдар (Client, Request, Response, Error, Paginator, WebhookVerifier).
3. Safe by default: ақылға қонымды таймауттар, экспоненциалды backoff + jitter, қайталанудан қорғау.
4. Config layering: ENV → -файл → құрастырушы → әдіс параметрлері.
5. Pluggable transport: HTTP/gRPC ауыстырылатын, прокси/ қосылымдарымен үйлесімді.
6. Testability: интерфейстер/фейктер, dependency injection, record-replay.
7. Қате I18n: машиналық 'error _ code' тұрақты; хабарлар жергілікті.
8. Accessibility: ыңғайлы жерде асинхронды нұсқалар (әдетте 'AsyncClient').
9. Security-first: құпиялар логиге түспейді, PII-редакция, қажет болған жағдайда FIPS-үйлесімді криптобиблиотекалар.

3) Қолдау кестесі және мүмкіндіктер тепе-теңдігі

ТілШағын нұсқасыОрындау үлгісіПлатформалар/дистрибуцияКүй- жайы
TypeScript/JavaScriptNode 18+async/awaitnpm (ESM+CJS), Deno, BunGA
Python3. 9+sync + aioPyPI (`sync`/`aio`), Wheels manylinuxGA
Java11+syncMaven Central, Android (қосымша)GA
Go1. 21+sync (ctx)Go modulesGA
.NETnet6. 0+sync/asyncNuGetGA
PHP8. 1+syncComposerBeta
Ruby3. 0+syncRubyGemsBeta
💡 API паритеті автогенерацияланатын матрицамен өлшенеді: эндпоинттер/фич тізімі, шығарылған күні, "has parity? ».

4) API базалық беті (каноникалық модель)

Ортақ мәні

Клиент: көлікті, кілттерді, ретрайлерді, telemetry hooks баптау.
Request/Response: типтік қауіпсіз модельдер/DTO, пагинация/курсорлар.
Error: бірыңғай сынып с 'status', 'error _ code', 'trace _ id', 'retriable'.
Paginator/Iterator: беттерді/меңзерлерді жалқаулықпен іріктеу.
WebhookVerifier: HMAC/mTLS тексеру, 'event _ id' дедупы.

Шағын мысал (TypeScript)

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 })) { /... / }

Шағын мысал (Python, 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`, `HTTP_PROXY/HTTPS_PROXY`, `GH_REGION`.
Құрастырушы: ENV қайта анықтайды.
Per-call overrides: әдіс деңгейіндегі таймаут/ретра.
TLS/mTLS: сертификат/кілт жолы, қажет болған жағдайда CA pinning.
Қосылыс пулдары: keep-alive, HTTP/2, параллелизмді шектеу.

6) Қораптан қауіпсіздік

Құпиялар: логикалық емес, stack traces жасыру; redaction ``.
Қолтаңбалар: Вебхуктар үшін HMAC, 'X-Key-Id '/кілттерді ротациялау, «екі кілтті» қолдау active/next.
Теңсіздік: write-операцияларына арналған 'Idempotency-Key' мөлдір қондырғы (қайта іске қосу қауіпсіз).
RBAC/Scopes: сатып алу үшін ыңғайлы санамалар/константалар.
PII-саясат: Логиндеу кезінде стандартты өңдеу интерфейстері.

7) Сенімділік: таймауттар, ретрациялар, бэк-офф

Әдепкі уақыт: 10-15с; коннект 3-5с.
Ретраилер: 5xx/408/429 үшін ('Retry-After' құрметтеу), экспоненциалды backoff + jitter, әрекет/уақыт шегі.
Circuit-breaker: SDK-да қосымша (немесе сыртқы либалар бойынша ұсынымдар).
Теңсіздік write: кілт бойынша автоматты түрде қайталау; коллизиялар → көтеру '409 IDEMP_REPLAY'.

8) Пагинация, курсорлар және стриминг

Курсор/итератор: жалқау іріктеу, транзиенттік қателер кезіндегі авто-қайталаулар.
Keyset-pagination: тұрақты реттеу '(updated_at,id)'.
Backpressure: бір уақытта сұрау лимиті; в async-SDK — `async for`/`channels`.
Стриминг (бар жерде): SSE/WebSocket/gRPC-stream авто-reconnect және «sequence» дедупы.

9) Қателер және келісімшарт

Бірыңғай иерархия:
  • `ApiError` (базовый) → подтипы: `AuthError(401)`, `PermissionError(403)`, `NotFound(404)`, `Conflict(409)`, `RateLimit(429)`, `ValidationError(422)`, `ServerError(5xx)`.
  • Свойства: `status`, `error_code`, `message`, `trace_id`, `retriable`, `details`.
  • Best practice: хабар - адам оқитын, 'error _ code' - тұрақты.

10) Тілдік идиомалар

TypeScript/JS

Promise-based + пагинация генераторлары; ESM + CJS пакеттері.
Tree-shaking, минималды полифилдер, abort-сигналдар ('AbortController').

Python

Sync + Async (aiohttp/httpx), контексттік менеджерлер, 'pydantic' модельдері (немесе dataclasses).
Wheels для linux/macos/windows; proxies/NO_PROXY қолдау.

Java

'CompletableFuture' (қажеттілігіне қарай), 'AutoCloseable', 'Duration', 'Executor'.
HTTP client: `java. net. http 'немесе OkHttp; Логтардың SLF4J.

Go

'context. Context`, `http. Client's tuned Transport, тест интерфейстері.
Error wrapping (`fmt. Errorf («% w», err) '), sentinel қателер семантикасы.

.NET

`HttpClientFactory`, `CancellationToken`, `IAsyncEnumerable<T>`.
Polly (retry/circuit-breaker) саясаты.

... және т.б. PHP/Ruby үшін (PSR-18, Faraday/Net:: HTTP).

11) Логика, метрика, трассировка

Логи: деңгейлер (ERROR/WARN/INFO/DEBUG), 'trace _ id' корелляциясы, сезімтал деректерді ажырату.
Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.
Трассалар: OpenTelemetry hooks (API шақыруына span, endpoint, status, retry төлсипаттары).
Debug-mode: 'GH _ SDK _ DEBUG = 1' орта айнымалысы - HTTP тақырыптарын (құпиясыз) және уақытты басып шығару.

12) Құжаттама және мысалдар

Quickstart 5 минут: auth, бірінші сұрау, пагинация, өңдеу 429.
Cookbook: вебхактар (қолтаңбаны тексеру), теңсіздік write, реплика.
API анықтамалығы: OpenAPI/Protobuf автогені, бірақ «қол» мысалдары бар.
Snippets: танымал тапсырмалар үшін дайын код бөліктері (Python/TS/Java/Go/.NET).

13) Генерация vs қолмен кодтау

Аралас тәсіл: codegen (модельдер/клиенттер) + ergonomics/демпотенттік/пагинаторларға арналған қол «тұтқалары».
Үлгілер: әдістердің бірыңғай атаулары ('create/get/list/update/delete'), стаб. сигнатуралар.
Регеннен кейін «diff-үйлесімділігін» тексеру (CI-гейт).

14) Нұсқалау, үйлесімділік және депрекация

SemVer: X.Y.Z. Сыну - тек major.
Тұрақтылық саясаты: шағын релиздер - өрістерді/әдістерді қосады, келісімшарттарды өзгертпейді.
Deprecation: аннотациялар/ @Deprecated/Obsolete атрибуттары, процеске бір рет рантаймдағы ескертулер, терезе ≥ 90 күн.
LTS-тармақтары: критфикстер backport (жаңа сызықсыз).

15) Релиздер және жеткізу тізбегі

CI/CD: линтерлер/форматорлар, unit + integration, келісімшарт-тестілер, құмсалғышқа қарсы e2e.
Шығарылымдардағы артефактілердің: Sigstore/GPG, checksums қолы.
Жариялау: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems changelog және release notes.
SemVer gate: жария API сыйысымдылығын автоматты түрде тексеру (мысалы, 'apiregistry diff').

16) Тестілеу (сапа матрицасы)

Unit: модельдер, серияландыру, валидация, ретраи/таймауттар.
Contract: OpenAPI/Protobuf схемаларына қарсы (negative/edge cases).
Integration: sandbox қарсы (теңсіздік, 429/5xx, webhooks).
Load/soak: пагинация/стрим, backpressure.
Fuzz: өрістер/тақырыптар/уақыт шектері.
Compat: ескі SDK жаңа API және керісінше.
Smoke-pack: CI регресін ұстау үшін 5 минут.

17) Телеметрия және жекешелендіру саясаты

Опциондық-opt-in: PII-сіз SDK (нұсқа, тіл, мәртебе) біріктірілген метриктерін жинау.
: 'telemetry: off' anonymized 'full' (әдепкі off/anonymized).
Ашықтық: не және не үшін жиналатынын құжаттаңыз; өшіру құсбелгісін беріңіз.

18) Өнімділік және FinOps

Batching: ұсақ сұрауларды біріктіру; RPS лимиттеу; gzip/br.
ETag/If-None-Match кэштеу, шартты GET.
Үнемді модельдер: жадқа бәрін жүктеудің орнына жалқау итераторлар.
API «DDOS» болмауы үшін «max _ concurrency» лимитімен параллелизм.

19) SDK типтік компоненттері (скелеттер)

Error (TypeScript)

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

Пагинатор (Python)

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: сыни жүктер - fix ETA, байланыс арналары, үйлесімділік матрицасы (SDK API).
Issue templates: bug/feature/question, тіл/нұсқа бойынша auto-triage.
Roadmap/labels: «good first issue», «help wanted».
Security policy: `SECURITY. md ', осалдықтар туралы есептер арнасы, қажет болған жағдайда CVE.

21) Сапа чек-парағы SDK

  • Бірыңғай қате моделі ('status', 'error _ code', 'trace _ id', 'retriable').
  • Таймауттар/ретрайлер/jitter, құрмет 'Retry-After'.
  • Write сәйкестігі, автоматты түрде 'Idempotency-Key'.
  • Курсормен пагинация, жалқау итераторлар/ағындар.
  • WebhookVerifier HMAC/mTLS және дедуппен.
  • ENV/құрастырушы/параметрлері арқылы конфигурациялау.
  • Логин/метрика/OTel-huki, құпиясыз дебуг режимі.
  • SemVer, 90 күнге ≥ депрекация, LTS-тармақтары.
  • Танымал тапсырмалар бойынша толық мысалдар мен Cookbook.
  • CI-дегі тілдер арасындағы паритет матрицасы.

22) Енгізу жоспары (3 итерация)

1. MVP (2-3 апта): базалық Client, auth, 3-5 негізгі эндпоинт, пагинация, бірыңғай қате-модель, ретраи/таймауттар; TS+Python.
2. Scale (3-5 апта): Java/Go/.NET, WebhookVerifier, теңсіздік write, телеметрия hooks, OpenAPI модельдерін жасау.
3. Pro (үздіксіз): стриминг/SSE/gRPC, perf-оңтайландыру, LTS-тармақтары, кеңейтілген Cookbook, көші-қон/депрекация құралдары.

23) Шағын FAQ

Бәрін генерациялау керек пе, әлде қолмен жазу керек пе?
Модельдерді/клиенттерді жасаңыз, ал ergonomics (пагинаторлар, ретралар, іспеттілік, ыңғайлы белгілер) - қолмен.

Жеке async-SDK қажет пе?
В Python — да (`AsyncClient`); JS - әдепкі; в.NET/Java - мүмкіндігінше асинхронды қоңыраулар.

Тілдер тепе-теңдігін қалай сақтау керек?
CI-дегі матрица, «белдік бойынша» (TS → Py → Java → Go → .NET) автоматты репорты бар релиздер.

Жиынтығы

Күшті SDK - бұл бірыңғай бет, сенімді дефолттар және барлық тілдерде бірдей болжамды келісімшарттар. Әзірлеушілерге қауіпсіз «қорап» параметрлерін, түсінікті қате-модельді, ыңғайлы пагинацияны және веб-хуктерді тексеруді беріңіз, оны сапалы құжаттамамен және қатаң semver-пен аяқтаңыз. Сонда интеграция жылдам, қолдау арзан, ал экожүйе орнықты және ауқымды болады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.