Logo GH

SDK dil dizaýny we goldawy

1) SDK maksatlary we üstünlik ölçegleri

Developer Experience (DX): duýgur API, dilleriň arasyndaky ýeke-täk semantika.
Ygtybarlylygy: taýmautlar/retraýlar/" gutudan "idempotentlik.
Howpsuzlyk: syrlar, gollar, TLS, proksi/企业 gurşaw bilen gabat gelmek.
Syn edilişi: dil üçin standart gurallarda loglar, metrikler, ýollar.
Ykdysadyýet: minimal egress/CPU, täsirli paginasiýa, batchi.
Durnuklylyk: berk semver, ters gabat gelmek, LTS şahalary.

2) Binagärlik ýörelgeleri

1. Thin client, strong contracts: SDK gizlin iş logikasyz teswirnamanyň (REST/gRPC) üstündäki örtük.
2. Unified surface: birmeňzeş düşünjeler (Client, Request, Response, Error, Paginator, WebhookVerifier).
3. Safe by default: akylly wagtlar, eksponensial backoff + jitter, gaýtalanmakdan gorag.
4. Config layering: ENV → -faýl → dizaýner → usulyň parametrleri.
5. Pluggable transport: HTTP/gRPC çalşylýar, proxy/ birikdirmeleri bilen gabat gelýär.
6. Synag ukyby: interfeýsler/galplyklar, dependency injection, record-replay.
7. Hata I18n: maşyn 'error _ code' durnukly; habarlar lokallaşdyrylýar.
8. Accessibility: "AsyncClient" (adatça 'AsyncClient') görnüşi.
9. Security-first: syrlar girelgelere girmeýär, PII-redaksiýa, zerur bolan halatynda FIPS-gabat gelýän kripto-bibliotekalar.

3) Goldaw tablisasy we mümkinçilikleriň deňligi

DilKiçi wersiýaÝerine ýetiriş modeliPlatformalar/distributionStatus
TypeScript/JavaScriptNode 18+async/awaitnpm (ESM+CJS), Deno, BunGA
Python3. 9+sync + aioPyPI (`sync`/`aio`), Wheels manylinuxGA
Java11+syncMaven Central, Android (goşmaça)GA
Go1. 21+sync (ctx)Go modulesGA
.NETnet6. 0+sync/asyncNuGetGA
PHP8. 1+syncComposerBeta
Ruby3. 0+syncRubyGemsBeta
💡 API deňligi awtogenerirlenýän matrisa bilen ölçelýär: endpointleriň sanawy/fiç, goýberilen senesi, "has parity? ».

4) API esasy ýüzi (kanoniki model)

Umumy zatlar

Müşderi: ulaglary, açarlary, retraýlary, telemetry hooks sazlamak.
Request/Response :/DTO, paginasiýa/kursorlar.
Error: 'status', 'error _ code', 'trace _ id', 'retriable'.
Paginator/Iterator: sahypalaryň/kursorlaryň ýaltalygy.
WebhookVerifier: HMAC/mTLS barlagy.

Kiçi görelde (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 })) { /... / }

Kiçi görelde (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) Konfigurasiýa we ýerine ýetiriş gurşawy

ENV: `GH_API_KEY`, `GH_ENDPOINT`, `GH_TIMEOUT_MS`, `HTTP_PROXY/HTTPS_PROXY`, `GH_REGION`.
Dizaýner: ENV-ni täzeden kesgitleýär.
Per-call overrides: usul derejesinde wagt/retra.
TLS/mTLS: şahadatnama/açara ýol, zerur bolsa CA pinning.
Baglanyşyk howuzlary: keep-alive, HTTP/2, paralelligi çäklendirmek.

6) Gutudan howpsuzlyk

Syrlar: stack traces-da gizlemäň; redaction ``.
Gollar: Webhook üçin HMAC, 'X-Key-Id '/açar aýlawy, "iki açar" aktive/next goldawy.
Idempotentlik: write amallary üçin "Idempotency-Key" aç-açan gurnama (täzeden başlamak howpsuz).
RBAC/Skopes: satyn almak üçin amatly sanaw/sabitler.
PII-syýasat: logirlemekde redaktirlemegiň standart interfeýsleri.

7) Ygtybarlylyk: Taýmautlar, retraýlar, arka-off

Adaty wagt: 10-15s; konnekt 3-5c.
Retrailer: 5xx/408/429 üçin ('Retry-After' -e hormat goýmak), eksponensial backoff + jitter, synanyşyk/wagt çäkleri.
Circuit-breaker: SDK-da goşmaça (ýa-da daşarky liblar boýunça teklipler).
Idempotent write: açar boýunça awtomatiki gaýtalamak; çaknyşyklar → götermek '409 IDEMP_REPLAY'.

8) Paginasiýa, kursorlar we akym

Kursor/iterator: ýalta artykmaç, geçiş ýalňyşlyklarynda awto-gaýtalanmalar.
"Keyset-pagination": "(updated_at,id)".
Backpressure: bir wagtyň özünde soramagyň çägi; в async-SDK — `async for`/`channels`.
Akym (bar ýerinde): SSE/WebSocket/gRPC-stream awto-reconnect we 'sequence' sözbaşy bilen.

9) Ýalňyşlyklar we şertnama

Bitewi iýerarhiýa:
  • `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: Habarlar - adam okalýar, 'error _ code' - durnukly.

10) Dil idiomalary

TypeScript/JS

Promise-based + paginasiýa üçin generatorlar; ESM + CJS paketleri.
Tree-shaking, minimal polifiller, abort signallary ('AbortController').

Python

Sync + Async (aiohttp/httpx), kontekst-dolandyryjylar, 'pydantic' modelleri (ýa-da dataclasses).
Wheels для linux/macos/windows; proxies/NO_PROXY goldamak.

Java

'CompletableFuture' (zerur), 'AutoCloseable', 'Duration', 'Executor'.
HTTP client: `java. net. http 'ýa-da OkHttp; SLF4J girelgeleri.

Go

Kontekstler 'context. Context`, `http. Client's tuned Transport, synaglar üçin interfeýsler.
Error wrapping (`fmt. Errorf ("% w", err) '), sentinel ýalňyşlyklarynyň semantikasy.

.NET

`HttpClientFactory`, `CancellationToken`, `IAsyncEnumerable<T>`.
Polly syýasatlary (retry/circuit-breaker).

... we ş.m. PHP/Ruby üçin (PSR-18, Faraday/Net:: HTTP).

11) Logirleme, metrika, yzarlama

Loglar: derejeler (ERROR/WARN/INFO/DEBUG), korelýasiýa 'trace _ id', duýgur maglumatlary öçürmek.
Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.
Ýollar: OpenTelemetry hooks (API çagyryşyna span, endpoint, status, retry atributlary).
Debug-mode: üýtgeýän gurşaw 'GH _ SDK _ DEBUG = 1' - HTTP sözbaşylaryny (syrsyz) we wagtlary çap etmek.

12) Resminamalar we mysallar

Quickstart 5 minut: auth, birinji haýyş, paginasiýa, gaýtadan işlemek 429.
Cookbook: webhuklar (goly barlamak), idempotent write, bellik.
API gollanmasy: OpenAPI/Protobuf-dan awtogen, ýöne "el" mysallary bilen.
Snippets: meşhur meseleler üçin taýýar kod bölekleri (Python/TS/Java/Go/.NET).

13) Nesil vs el bilen kodlamak

Kombinirlenen çemeleşme: codegen (modeller/müşderiler) + ergonomics/idempotentlik/paginatorlar üçin "ruçkalar".
Şablonlar: usullaryň birmeňzeş atlary ('create/get/list/update/delete'), stab. belgiler.
Regenden soň "diff-laýyklygy" barlamak (CI-gate).

14) Wersiýalaşdyrmak, gabat gelmek we deprekasiýa

SemVer: X.Y.Z. Döwmek - diňe major.
Durnuklylyk syýasaty: kiçi relizler - meýdanlary/usullary goşýarlar, şertnamalary üýtgetmeýärler.
Deprecation: düşündirişler/ @Deprecated/Obsolete atributlary, ýüz tutma duýduryşlary her proses üçin bir gezek, penjire ≥ 90 gün.
LTS şahalary: kritfiksleriň arka porty (täze fiçsiz).

15) Goýberişler we eltip bermek zynjyry

CI/CD: linterler/formaterler, unit + integration, şertnama-synaglar, e2e garşy sandyk gutusy.
Artefaktlaryň goly: Sigstore/GPG, relizlerde checksums.
Neşir: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems with changelog and release notes.
SemVer gate: public API-iň awto-barlagy (mysal üçin 'apiregistry diff').

16) Synag (hil matrisi)

Unit: modeller, serializasiýa, tassyklama, retrailer/wagtlar.
Contract: OpenAPI/Protobuf shemalaryna garşy (negative/edge cases).
Integration: vs sandbox (idempotentlik, 429/5xx, webhooks).
Load/soak: paginasiýa/akym, backpressure.
Fuzz: meýdan/sözbaşy/wagt çäkleri.
Compat: köne SDK täze API we tersine.
Smoke-pack: CI-de regresi tutmak üçin 5 minut.

17) Telemetriýa we gizlinlik syýasaty

Option-opt-in: PII-siz SDK (wersiýa, dil, statuslar) jemlenen metrikleri ýygnamak.
: 'telemetry: off' anonymized 'full' (default off/anonymized).
Aç-açanlyk: nämäni we näme üçin ýygnanýandygyny resminamalaşdyryň; öçürmek belgisini beriň.

18) Öndürijilik we FinOps

Batching: ownuk soraglary birleşdirmek; RPS çäklendirmek; gzip/br.
ETag/If-None-Match kesmek, şertli GET.
Tygşytly modeller: ýatda hemme zady ýüklemegiň ýerine ýalta iteratorlar.
"DDOS" API-den gaça durmak üçin "max _ concurrency" çäkli paralellik.

19) SDK-nyň nusgawy komponentleri (skeletler)

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

Paginator (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) Goldaw, SLA we jemgyýet

SDK boýunça SLA: kritiki bökdençlikler - fix ETA, aragatnaşyk kanallary, laýyklyk matrisi (SDK API).
Issue templates: bug/feature/question, auto-triage dil/wersiýa boýunça.
Roadmap/labels: «good first issue», «help wanted».
Security policy: `SECURITY. md ', gowşaklyk hasabatlary üçin kanal, zerur bolan halatynda CVE.

21) SDK hiliniň çek-sanawy

  • Ýeke-täk hata ('status', 'error _ code', 'trace _ id', 'retriable').
  • Wagt/retrailer/jitter, hormat 'Retry-After'.
  • Write idempotentligi, awtomatiki "Idempotency-Key".
  • Kursor, ýalta iteratorlar/akymlar.
  • WebhookVerifier HMAC/mTLS we dedup bilen.
  • ENV/dizaýner/parametrler arkaly konfigurasiýa.
  • Logistika/metrika/OTel-huki, syr ýok debug-mode.
  • SemVer, deprekasiýa ≥ 90 gün, LTS şahalary.
  • Meşhur meseleler boýunça doly mysallar we Cookbook.
  • CI-de dilleriň arasyndaky paritet matrisi.

22) Durmuşa geçirmek meýilnamasy (3 iterasiýa)

1. MVP (2-3 hepde): Esasy Client, auth, 3-5 esasy endpoint, paginasiýa, ýeke-täk ýalňyşlyk-model, retrailer/wagt; TS+Python.
2. Scale (3-5 hepde): Java/Go/.NET, WebhookVerifier, write idempotentligi, telemetriýa hooks, OpenAPI-den modelleri döretmek.
3. Pro (üznüksiz): akym/SSE/gRPC, perf-optimizasiýa, LTS şahalary, giňeldilen Cookbook, migrasiýa/deprekasiýa gurallary.

23) Mini-FAQ

Hemme zady döretmek ýa-da el bilen ýazmak?
Modelleri/müşderileri dörediň, ergonomics bolsa (paginatorlar, retralar, idempotentlik, amatly alamatlar) - el bilen.

Aýratyn async-SDK gerekmi?
В Python — да (`AsyncClient`); JS - adaty; v. NET/Java - mümkin boldugyça asenkron jaňlar.

Dilleriň deňligini nädip saklamaly?
CI-de matrisa fiç, "kemer boýunça" (TS → Py → Java → Go → .NET) "näme yzda" awto-habary bilen çykarylýar.

Jemi

Güýçli SDK - ähli dillerde birmeňzeş bolan ýeke-täk ýer, ygtybarly defoltlar we öňünden aýdyp boljak şertnamalar. Işläp düzüjilere "gutudan" ygtybarly sazlamalary, düşnükli ýalňyşlyk-model, amatly paginasiýa we webhuklary barlamagy beriň, ony hil resminamalary we berk semver bilen tamamlaň. Şonda integrasiýa çalt, goldaw arzan we ekosistema durnukly we masştably bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.