Logo GH

SDK-Design und Sprachunterstützung

1) SDK Ziele und Erfolgskriterien

Developer Experience (DX): Intuitive APIs, einheitliche Semantik zwischen den Sprachen.
Zuverlässigkeit: Timeouts/Retrays/Idempotenz „out of the box“.
Sicherheit: Geheimnisse, Signaturen, TLS, Kompatibilität mit proksi/企业 Umgebungen.
Beobachtbarkeit: Protokolle, Metriken, Tracks in Sprachstandardwerkzeugen.
Wirtschaft: Minimum egress/CPU, effektive Paginierung, Batchi.
Stabilität: strenger Semver, Abwärtskompatibilität, LTS-Zweige.

2) Architektonische Prinzipien

1. Thin Client, starke Verträge: SDK Wrapper über Protokoll (REST/gRPC), ohne versteckte Geschäftslogik.
2. Unified surface: gleiche Konzepte (Client, Request, Response, Error, Paginator, WebhookVerifier).
3. Safe by default: vernünftige Timeouts, exponentieller Backoff + Jitter, Schutz vor Wiederholungen.
4. Config layering: ENV → config-Datei → Konstruktor → Methodenparameter.
5. Pluggable Transport: HTTP/gRPC sind austauschbar, kompatibel mit proksi/池 Verbindungen.
6. Testfähigkeit: Schnittstellen/Fakes, dependency injection, record-replay.
7. I18n von Fehlern: Maschine' error _ code' ist stabil; Nachrichten sind lokalisierbar.
8. Zugänglichkeit: asynchrone Varianten (in der Regel 'AsyncClient'), wo relevant.
9. Security-First: Geheimnisse landen bei Bedarf nicht in Logs, PII-Revision, FIPS-konformen Krypto-Bibliotheken.

3) Unterstützungstabelle und Fähigkeitsparität

SpracheDie MiniversionAusführungsmodellPlattformen/VertriebDer Status
TypeScript/JavaScriptNode 18+async/awaitnpm (ESM+CJS), Deno, BunGA
Python3. 9+sync + aioPyPI (`sync`/`aio`), Wheels manylinuxGA
Java11+syncMaven Central, Android (optional)GA
Go1. 21+sync (ctx)Go modulesGA
.NETnet6. 0+sync/asyncNuGetGA
PHP8. 1+syncComposerBeta
Ruby3. 0+syncRubyGemsBeta
💡 Die Parität der APIs wird durch eine auto-generierte Matrix gemessen: Endpoint-Liste/Fich, Veröffentlichungsdatum, "has parity? ».

4) API-Basisfläche (kanonisches Modell)

Gemeinsame Einheiten

Client: Konfiguration von Transport, Schlüsseln, Retrays, Telemetrie-Hooks.
Request/Response: Typsichere Modelle/DTO, Pagination/Cursor.
Fehler: einzelne Klasse mit 'status', 'error _ code', 'trace _ id', 'retriable'.
Paginator/Iterator: Fauler Seitenwechsel/Cursor.
WebhookVerifier: HMAC/mTLS-Prüfung, Dedup durch 'event _ id'.

Mini-Beispiel (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-Beispiel (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) Konfiguration und Laufzeitumgebung

ENV: `GH_API_KEY`, `GH_ENDPOINT`, `GH_TIMEOUT_MS`, `HTTP_PROXY/HTTPS_PROXY`, `GH_REGION`.
Konstruktor: Definiert ENV neu.
Per-Call-Overrides: Timeout/Retrays auf Methodenebene.
TLS/mTLS: Pfad zum Zertifikat/Schlüssel, ggf. pinning CA.
Verbindungspools: Keep-Alive, HTTP/2, Begrenzung der Parallelität.

6) Sicherheit aus dem Karton

Geheimnisse: nicht protokollieren, in Stack-Spuren verstecken; redaction ``.
Signaturen: HMAC für Webhooks, 'X-Key-Id '/Schlüsselrotation, Unterstützung für „zwei Schlüssel“ aktiv/weiter.
Idempotenz: Transparente Installation des' Idempotency-Key 'für Write-Operationen (Neustart sicher).
RBAC/Scopes: praktische Aufzählungen/Konstanten für Scopes.
PII-Richtlinie: Standard-Bearbeitungsschnittstellen bei der Protokollierung.

7) Zuverlässigkeit: Timeouts, Retrays, Backoffs

Standard-Timeout: 10-15s; Anschluss 3-5c.
Retrays: für 5xx/408/429 (Respekt 'Retry-After'), exponentieller Backoff + Jitter, Limit Versuche/Zeit.
Circuit-Breaker: optional im SDK (oder Empfehlungen für Drittanbieter-Libs).
Idempotent Schreiben: automatische Wiederholung durch Schlüssel; Kollision → erhöhen '409 IDEMP_REPLAY'.

8) Paginierung, Cursor und Streaming

Cursor/Iterator: faule Overkill, Auto-Wiederholungen bei transienten Fehlern.
Keyset-Paginierung: Stabile Ordnung'(updated_at,id)'.
Backpressure: Begrenzung gleichzeitiger Anfragen; в async-SDK — `async for`/`channels`.
Streaming (wo verfügbar): SSE/WebSocket/gRPC-Stream mit Auto-Reconnect und Deduplex durch „sequence“.

9) Fehler und Vertrag

Einheitliche Hierarchie:
  • `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: Nachrichten sind menschenlesbar, 'error _ code' ist stabil.

10) Sprachliche Idiome

TypeScript/JS

Promise-basierte + Generatoren für Pagination; ESM + CJS-Pakete.
Tree-shaking, minimale Polyphile, Abortsignale („AbortController“).

Python

Sync + Async (aiohttp/httpx), Kontext-Manager, 'pydantic' Modelle (oder dataclasses).
Wheels для linux/macos/windows; Unterstützung der proxies/NO_PROXY.

Java

„CompletableFuture“ (falls erforderlich), „AutoCloseable“, „Duration“, „Executor“.
HTTP client: `java. net. http 'oder OkHttp; SLF4J für die Protokolle.

Go

Kontexte' Kontext. Context`, `http. Client 'mit Tuned Transport, Schnittstellen für Tests.
Error wrapping (`fmt. Errorf („% w“, err)'), die Semantik der Sentinel-Fehler.

.NET

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

... usw. für PHP/Ruby (PSR-18, Faraday/Net:: HTTP).

11) Logging, Metriken, Tracing

Protokolle: Ebenen (ERROR/WARN/INFO/DEBUG), Korrelation 'trace _ id', Abschalten sensibler Daten.
Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.
Traces: OpenTelemetry hooks (span pro API-Aufruf, Attribute endpoint, status, retry).
Debug-Modus: Umgebungsvariable' GH _ SDK _ DEBUG = 1'- druckt HTTP-Header (ohne Geheimnisse) und Zeiten.

12) Dokumentation und Beispiele

Quickstart 5 Minuten: auth, erste Anfrage, Pagination, Verarbeitung 429.
Kochbuch: Webhooks (Signaturprüfung), idempotente Schrift, Replays.
API-Referenz: autogen von OpenAPI/Protobuf, aber mit „manuellen“ Beispielen.
Snippets: fertige Code-Stücke für gängige Aufgaben (Python/TS/Java/Go/.NET).

13) Erzeugung vs manuelle Codierung

Kombinierter Ansatz: codegen (Modelle/Kunden) + manuelle „Stifte“ für Ergonomie/Idempotenz/Paginatoren.
Die Schablonen: die einheitlichen Namen der Methoden (' create/get/list/update/delete '), stab. Signaturen.
Prüfung der „diff-Kompatibilität“ nach Regen (CI-Gate).

14) Versionierung, Kompatibilität und Deprecationen

SemVer: X.Y.Z. Das Brechen ist nur das Große.
Stabilitätspolitik: Nebenveröffentlichungen - Felder/Methoden hinzufügen, Verträge nicht ändern.
Deprecation: Anmerkungen/Attribute @ Deprecated/Obsolete, Warnungen in Rantayme einmal pro Prozess, Fenster ≥ 90 Tage.
LTS-Zweige: Backport von Critfixes (keine neuen Fich).

15) Freigaben und Lieferkette

CI/CD: Linter/Formatierer, Unit + Integration, Vertragstests, e2e vs. Sandbox.
Signatur der Artefakte: Sigstore/GPG, checksums auf den Releases.
Veröffentlichung: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems mit Changelog und Release Notes.
SemVer gate: Auto-Check der Kompatibilität der öffentlichen API (z.B. 'apiregistry diff').

16) Prüfung (Qualitätsmatrix)

Einheit: Modelle, Serialisierung, Validierung, Retrays/Timeouts.
Vertrag: gegen OpenAPI/Protobuf-Schemata (negative/Randfälle).
Integration: gegen die Sandbox (Idempotenz, 429/5xx, Webhooks).
Laden/Soak: Pagination/Stream, Backpressure.
Fuzz: Felder/Titel/Zeitgrenzen.
Compat: Alte SDKs ↔ neue APIs und umgekehrt.
Smoke-Pack: 5 Minuten, um die Regression in CI zu fangen.

17) Telemetrie- und Datenschutzrichtlinien

Optional-opt-in: Sammlung aggregierter SDK-Metriken (Version, Sprache, Status) ohne PII.
Config: 'telemetry: off' anonymized 'full' (default off/anonymized).
Transparenz: Dokumentieren Sie, was und warum gesammelt wird; Deaktivieren Sie das Kontrollkästchen.

18) Leistung und FinOps

Batching: Kombinieren Sie kleine Anfragen; RPS begrenzen; gzip/br.
ETag/If-None-Match-Cache, bedingte GETs.
Sparsame Modelle: Faule Iteratoren, anstatt alles in den Speicher zu laden.
Parallelität zum Limit: 'max _ concurrency', also keine' DDOSit 'API.

19) Typische SDK-Komponenten (Skelette)

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) Unterstützung, SLA und Gemeinschaft

SLA nach SDK: kritische Bugs - fix ETA, Kommunikationskanäle, Kompatibilitätsmatrix (SDK↔API).
Issue templates: bug/feature/question, auto-triage nach Sprache/Version.
Roadmap/labels: «good first issue», «help wanted».
Security policy: `SECURITY. md', Kanal für Schwachstellenberichte, CVE bei Bedarf.

21) SDK-Qualitätscheckliste

  • Ein einzelner Modellfehler ('status', 'error _ code', 'trace _ id', 'retriable').
  • Timeouts/Retrays/Jitter, Respekt vor 'Retry-After'.
  • Schreibidempotenz, automatisch 'Idempotency-Key'.
  • Cursor-Paginierung, faule Iteratoren/Streams.
  • WebhookVerifier mit HMAC/mTLS und Deduplizierung.
  • Konfiguration über ENV/Konstruktor/Parameter.
  • Logging/Metriken/OTel-Hooks, Debug-Modus ohne Geheimnisse.
  • SemVer, Deprections ≥90 Tage, LTS-Zweige.
  • Vollständige Beispiele und Cookbook zu beliebten Aufgaben.
  • Die Matrix der Parität zwischen den Sprachen in CI.

22) Implementierungsplan (3 Iterationen)

1. MVP (2-3 Wochen): Basic Client, auth, 3-5 Key Endpoints, Paginierung, Single Error Model, Retrays/Timeouts; TS+Python.
2. Scale (3-5 Wochen): Java/Go/.NET, WebhookVerifier, Schreibidempotenz, Hooks Telemetrie, Modellgenerierung aus OpenAPI.
3. Pro (kontinuierlich): Streaming/SSE/gRPC, perf-Optimierungen, LTS-Zweige, erweitertes Cookbook, Migrations-/Deprection-Tools.

23) Mini-FAQ

Alles generieren oder mit den Händen schreiben?
Generieren Sie Modelle/Kunden und Ergonomics (Paginatoren, Retrays, Idempotenz, handliche Signaturen) manuell.

Benötige ich ein separates async-SDK?
В Python — да (`AsyncClient`); in JS - Standard; v.NET/Java - asynchrone Aufrufe nach Möglichkeit.

Wie hält man die Parität der Sprachen?
Matrix-Fich in CI, Releases „in Bändern“ (TS→Py→Java→Go→.NET) mit Auto-Report „was hinkt“.

Summe

Ein starkes SDK ist eine einzige Oberfläche, zuverlässige Ausfälle und vorhersehbare Verträge, die in allen Sprachen gleich sind. Geben Sie Entwicklern sichere Out-of-the-Box-Einstellungen, ein verständliches Fehlermodell, eine bequeme Paginierung und Verifizierung von Webhooks, vervollständigen Sie dies mit hochwertiger Dokumentation und strengem Semver. Dann werden die Integrationen schnell, der Support günstig und das Ökosystem nachhaltig und skalierbar sein.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Telegram
@Gamble_GC
Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.