Logo GH

Design SDK e supporto linguistico

1) Obiettivi SDK e criteri di successo

Developer Experience (DX) - API intuitive, un'unica semantica tra lingue.
Affidabilità: timeout/retrai/idampotenza da scatola.
Sicurezza: segreti, firme, TLS, compatibilità con ambienti proksi/企业.
Osservabilità: fogli, metriche, piste in strumenti standard per la lingua.
Economia: minimo egress/CPU, paginazione efficiente, batch.
Stabilità: severo semver, compatibilità inversa, rami LTS.

2) Principi architettonici

1. Thin client, strong contracts: avvolgimento SDK sopra il protocollo (REST/gRPC), senza logica aziendale nascosta.
2. Unified surface: concetti identici (Client, Richiest, Response, Errore, Paginator, WebhookVerifier).
3. Safe by default: timeout ragionevole, backoff esponenziale + jitter, protezione contro le ripetizioni.
4. Config layering: il file ENV Il costruttore i parametri del metodo.
5. Pluggable Transfer: HTTP/gRPC sostituibili, compatibili con connessioni proksi/池.
6. Testability: interfacce/falsità, dipendency injection, record-replay.
7. I18n errori: la macchina «error _ code» è stabile; i messaggi sono localizzabili.
8. Accessibility: opzioni asincrone (solitamente «AsyncClient») se necessario.
9. Sicurezza-first - I segreti non entrano nella redazione PII, cryptobiblioteche compatibili FIPS se necessario.

3) Tabella di supporto e parità di funzionalità

LinguaVersione miniModello di esecuzionePiattaforme/distribuzioneStato
TypeScript/JavaScriptNode 18+async/awaitnpm (ESM+CJS), Deno, BunGA
Python3. 9+sync + aioPyPI (`sync`/`aio`), Wheels manylinuxGA
Java11+syncMaven Central, Android (opzionale)GA
Go1. 21+sync (ctx)Go modulesGA
.NETnet6. 0+sync/asyncNuGetGA
PHP8. 1+syncComposerBeta
Ruby3. 0+syncRubyGemsBeta
💡 La parità dell'API viene misurata con una matrice automatizzata: elenco degli endpoint/fich, data di lancio, "haas parity? ».

4) Superficie API di base (modello canonico)

Entità generali

Client - Configurazione di trasporti, chiavi, retrai, telemetri hooks.
Richiest/Response: modelli di sicurezza/DTO, paginazione/cursori.
Errore: un'unica classe con «status», «error _ code», «trace _ id», «retriable».
Paginator/Iterator: eccesso pigro di pagine/cursori.
, controllo del , per «event _ id».

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

Mini esempio (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) Configurazione e ambiente di esecuzione

ENV: `GH_API_KEY`, `GH_ENDPOINT`, `GH_TIMEOUT_MS`, `HTTP_PROXY/HTTPS_PROXY`, `GH_REGION`.
Struttura - Ridefinisce l'ENV.
Per-call overrides: timeout/retrai a livello di metodo.
TLS/mTLS: percorso del certificato/chiave, pinning CA se necessario.
Pool di connessione: keep-alive, HTTP/2, vincolo di parallelismo.

6) Sicurezza dalla scatola

I segreti non sono logici, nascosti in stack traces; redaction ``.
Etichette: HMAC per webhook, X-Key-ID/rotazione chiavi, supporto per due chiavi active/next.
Idempoted: installazione trasparente dì Idempotency-Key "per le operazioni write (il riavvio è sicuro).
RBAC/Scopes: elencazioni/costanti comode per scrocchi.
Criteri PII - Interfacce di modifica standard per la logica.

7) Affidabilità: timeout, retrai, back-off

Timeout predefinito: 10-15s; Connect 3-5s.
Retrai: per 5xx/408/429 (rispettare Retry-After), backoff esponenziale + jitter, limite di tentativi/tempo.
Circuito-breaker: opzionale in SDK (o raccomandazioni per libere di terze parti).
Write idipotente: ripetizione automatica della chiave; i collisioni → a sollevare «409 IDAMP _ REPLAY».

8) Paginazione, cursori e streaming

Puntatore/iteratore: eccesso pigro, ripetizioni automatiche in caso di errori transitori.
Paginazione Keyset: sistemazione stabile '(updated _ at, id)'.
Backpressure: limite delle richieste simultanee в async-SDK — `async for`/`channels`.
Lo streaming (dove disponibile) è un SSE/WebSocket/gRPC-stream con l'auto-reconnect e la deducibilità per sequence.

9) Errori e contratto

Un'unica gerarchia:
  • `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: i messaggi sono umani, 'error _ code' è stabile.

10) Idiomi linguistici

TypeScript/JS

Promise-based + generatori di paginazione; pacchetti ESM + CJS.
Tree-shaking, polifili minimi, segnali abort ('AbortController').

Python

Sync + Async (aiohttp/httpx), contesto manager, modelli «pydantic» (o dataclasses).
Wheels для linux/macos/windows; supporto proxies/NO _ PROXY.

Java

«CompletableFuture», «AutoCloseable», «Duration», «Execuutor».
HTTP client: `java. net. http 'o OkHttp; SLF4J per le unità.

Go

Contesti dì text. Context`, `http. Client "con tuned Transfer, interfacce per i test.
Error wrapping (`fmt. Errorf («% w», err) '), semantica degli errori sentinel.

.NET

`HttpClientFactory`, `CancellationToken`, `IAsyncEnumerable<T>`.
Criteri Polly (retry/circuito-breaker).

... e così via per PHP/Ruby (PSR-18, Faraday/Net:: HTTP).

11) Loging, metriche, traccia

Loghi: livelli (ERRORE/WARN/INFO/DEBUG), corellazione «trace _ id», disattivazione dei dati sensibili.
Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.
Piste: OpenTelemetry hooks (span per la chiamata API, attributi endpoint, status, retry).
Debug-mode: variabile ambiente «GH _ SDK _ DEBUG = 1» - Stampa intestazioni HTTP (senza segreti) e tempi.

12) Documentazione e esempi

Quickstart 5 minuti: auth, prima richiesta, paginazione, trattamento 429.
Cookbook: webhook (controllo della firma), write idipotente, repliche.
L'API è un gene automatico dal OpenAPI/Protobuf, ma con esempi «manuali».
Snippets: parti di codice pronte per attività popolari (Python/TS/Java/Go/.NET).

13) Generazione vs codifica manuale

Approccio combinato: codegen (modelli/client) + maniglie per ergonomics/idampotenza/paginatori.
Modelli: un unico nome di metodo ('create/get/list/update/delete'), stab. Le firme.
Verifica della compatibilità dopo il regen (CI-gate).

14) Versioning, compatibilità e deprecazione

X.Y.Z. Rompitore - solo maggiore.
Politica di stabilità: rilasci minori - aggiungere campi/metodi, non cambiare i contratti.
Deprecation: annotazioni/attributi @ Deprecated/Obsolete, avvisi in un RENT una volta per processo, finestra per 90 giorni.
Rami LTS: backport dei critici (senza nuovi files).

15) Release e catena di fornitura

CI/CD: lenti/formattatori, unità + integrazione, test di contratto, e2e contro arenaria.
Firma manufatti Sigstore/GPG, checksums sui rilasci.
Pubblicazione: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems con changelog e note release.
SemVer gate: verifica automatica della compatibilità dell'API pubblica (ad esempio, «apiregistry differf»).

16) Test (matrice di qualità)

Unità: modelli, serializzazione, validazione, retrai/timeout.
Contract contro gli schemi di OpenAPI/Protobuf (negative/edge case).
Integration: contro sandbox (idampotenza, 429/5xx, webhooks).
Load/soak: paginazione/strame, backpressure.
Fuzz: campi/intestazioni/limiti di tempo.
Compat: le vecchie API SDK sono nuove e viceversa.
Smoke-pack: 5 minuti per catturare la regressione in CI.

17) Politiche di telemetria e privacy

Opzionale-opt-in - Raccolta di metriche SDK aggregate (versione, lingua, stato) senza PII.
Config: 'telemetry: off' anonymized'full '(predefinito off/anonymized).
Trasparenza: documentare cosa e perché lasciamo la casella di disattivazione.

18) Prestazioni e FinOps

Batching - Unire le richieste minori Limitare RPS gzip/br.
Cache ETag/If-None-Match condizionati da GET.
Modelli economici: iteratori pigri invece di caricare tutto nella memoria.
Parallelismo con il limite dì max _ concertency "per non DDOSyt API.

19) Componenti SDK tipici (scheletri)

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

Paginatore (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) Supporto, SLA e comunità

SLA SDK: bagi critici - fix ETA, canali di comunicazione, matrice di compatibilità (SDK↔API).
Issue templates: bug/feature/question, auto-triage per lingua/versione.
Roadmap/labels: «good first issue», «help wanted».
Security policy: `SECURITY. md, canale per i rapporti di vulnerabilità, CVE se necessario.

21) Assegno di qualità SDK

  • Un unico errore modello ('status', 'errore _ code', 'trace _ id', 'retriable').
  • Timeout/retrai/jitter, rispetto «Retry-After».
  • Idampotenza write, automatica «Idempotency-Key».
  • Paginazione con cursore, iteratori/striam pigri.
  • con e .
  • Configurazione tramite ENV/costruttore/impostazioni.
  • Loging/metriche/OTel-gancio, modalità debug senza segreti.
  • SemVer, depositi di ≥90 giorni, rami LTS.
  • Esempi completi e cookbook per attività popolari.
  • Matrice di parità Fich tra lingue in CI.

22) Piano di implementazione (3 iterazioni)

1. MVP (2-3 settimane): Client di base, auth, 3-5 endpoint chiave, paginazione, unico errore modello, retrai/timeout TS+Python.
2. Scale (3-5 settimane): Java/Go/.NET, WebhookVerifier, idipotenza write, telemetria hooks, generazione di modelli da OpenAPI.
3. Pro (continuativo): streaming/SSE/grPC, ottimizzazione perf, rami LTS, cookbook esteso, strumenti di migrazione/deprecazione.

23) Mini FAQ

Generare tutto o scrivere con le mani?
Generare modelli/client e ergonomics (paginatori, retrai, idemotia, firme) manualmente.

È necessario un async-SDK separato?
В Python — да (`AsyncClient`); JS - predefinito NET/Java - chiamate asincrone se possibile.

Come mantenere la parità di lingue?
Matrix Fich in CI, rilascio «Per i buchi» (TS→Py→Java→Go→.NET) con «che è indietro».

Totale

Il forte SDK è un'unica superficie, default affidabili e contratti prevedibili, uguali in tutte le lingue. Fornite agli sviluppatori impostazioni sicure da scatolone, modello di errore comprensibile, paginazione e verifica dei siti Web, completate con documentazione di qualità e severa semver. In tal caso, le integrazioni saranno rapide, il supporto sarà economico e l'ecosistema sostenibile e scalabile.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.