Logo GH

SDK設計和語言支持

1) SDK目標和成功標準

Developer Experience (DX):直觀API,語言之間的統一語義。
可靠性:開箱即用taymauts/retrai/等效性。
安全:秘密,簽名,TLS,與proksi/企业環境的兼容性。
可觀察性:語言標準工具中的邏輯,度量,軌跡。

經濟學: 最低egress/CPU,有效分期,batchi.

穩定性:嚴格的semver,向後兼容性,LTS分支。

2)建築原則

1.Thin client, strong contracts:協議包裹的SDK (REST/gRPC),沒有隱藏的業務邏輯。
2.統一曲面:相同的概念(Client、Request、Response、Error、Paginator、WebhookVerifier)。
3.Default Safe:合理的taymouts,指數backoff+jitter,重復保護。
4.配對布局:ENV →配對文件→構造函數→方法參數。
5.可插拔傳輸:HTTP/gRPC可互換,與連接proksi/池兼容。
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。
要求/響應:類型安全模型/DTO,分區/遊標。
錯誤:帶有「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:方法級別的taymaut/retrai。
TLS/mTLS:通往證書/密鑰的路徑,如有必要,pinning CA。

連接池: 保持活力,HTTP/2,並發約束.

6)開箱即用

秘密: 不要編譯,隱藏在堆棧軌道中;redaction ``.

標題:webhook的HMAC,「X-Key-Id」/鍵旋轉,支持「兩個鍵」active/next。
等效性:用於寫操作的「Idempotency-Key」透明安裝(重新啟動是安全的)。
RBAC/Scopes: scopes的方便枚舉/常數。
PII策略:編寫時的標準編輯接口。

7)可靠性: taymauts, retrais, back

默認的Taymout:10-15 c;3-5 c連接。
Retrai:對於5xx/408/429(尊重「Retry-After」),指數backoff+jitter,嘗試/時間限制。
電路斷路器:在SDK中可選(或第三方自由指南)。
等效寫作:按鍵自動重播;沖突→提高"409 IDEMP_REPLAY'。

8)分離,遊標和流媒體

光標/叠代器:懶惰的過度,在瞬態錯誤時自動重播。
Keyset分離:穩定排序「(updated_at,id)」。

Backpressure: 同時查詢的限制;в async-SDK — `async for`/`channels`.

流媒體(可用):SSE/WebSocket/gRPC-stream,帶有自動重新連接和「序列」重復數據消除功能。

9)錯誤和合同

單一層次結構:
  • `ApiError` (базовый) → подтипы: `AuthError(401)`, `PermissionError(403)`, `NotFound(404)`, `Conflict(409)`, `RateLimit(429)`, `ValidationError(422)`, `ServerError(5xx)`.
  • Свойства: `status`, `error_code`, `message`, `trace_id`, `retriable`, `details`.
  • 最佳實踐:信息-人為,「error_code」-穩定。

10)語言習語

TypeScript/JS

基於承諾的+分割發生器;ESM+CJS數據包。
樹木搖擺,最小的多葉植物,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.錯誤語義(「%w」,err)'。

.NET

`HttpClientFactory`, `CancellationToken`, `IAsyncEnumerable`.

Polly策略(retry/circuit-breaker)。

PHP/Ruby等(PSR-18,Faraday/Net::HTTP)。

11)邏輯、度量、跟蹤

Logs: Levels (ERROR/WARN/INFO/DEBUG), 「trace_id」,禁用敏感數據。

Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.

路線:OpenTelemetry hooks (span to API調用,endpoint屬性,status, retry)。
Debug-mode:環境變量「GH_SDK_DEBUG=1」-打印HTTP標題(無秘密)和時間。

12)文檔和示例

Quickstart 5分鐘: auth,第一次查詢,分頁,429處理.

Cookbook:webhooks(簽名驗證),偶數寫作,反射。
API參考:來自OpenAPI/Protobuf的自動生成,但帶有「手動」示例。
快照:用於流行任務的現成代碼塊(Python/TS/Java/Go/.NET)。

13)生成vs手動編碼

組合方法:codegen(模型/客戶端)+用於ergonomics/idementics/paginators的手動「手柄」。
模板:單一方法標題(「create/get/list/update/delete」),*。簽名。
Regen後檢查「diff兼容性」(CI門)。

14)轉化、互操作性和解密

SemVer:X.Y.Z。打破只是專業。
穩定性策略:次要版本-添加字段/方法,不更改合同。
Deprecation:註釋/屬性@Deprecated/Obsolete,每個過程一次在rantime中發出警告,窗口≥ 90天。
LTS分支:backport critfix(沒有新的幻影)。

15)發布和供應鏈

CI/CD: linters/gramters, unit+integration,合同測試,e2e vs.

工件簽名:Sigstore/GPG,版本中的checksums。
出版物:npm/PyPI/Maven/NuGet/Go/Composer/RubyGems,帶有changelog和發行說明。
SemVer gate:對公共API兼容性的自動驗證(例如「apiregistry diff」)。

16)測試(質量矩陣)

單位:模型,序列化,驗證,retrai/taymout。
合同:反對OpenAPI/Protobuf電路(negative/edge cases)。
整合:反對sandbox(等效性,429/5xx,webhooks)。

Load/soak: pagination/stream, backpressure.

Fuzz:字段/標題/時間邊界。
Compat:舊的SDK ↔新的API,反之亦然。
煙袋:5分鐘趕上CI倒退。

17)遙測和隱私政策

可選opt-in:在沒有PII的情況下收集聚合的SDK指標(版本、語言、狀態)。
Config: 'telemetry: off' anonymized 'full'(默認情況下為off/anonymized)。
透明度:記錄要收集的內容和原因;讓我們選中禁用。

18)性能和FinOps

擊球: 合並小查詢;限制RPS;gzip/br.

ETag/If-None-Match緩存,條件GET。
經濟模型:懶惰叠代器而不是將所有內容加載到內存中。
限制並發:「max_concurrency」以免出現「DDOSit」 API。

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}`); }
}
🚨 Check Alignment of 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)。
問題模板:bug/feature/question, auto-triage by language/版本。

Roadmap/labels: «good first issue», «help wanted».

Security policy: `SECURITY.md',漏洞報告的渠道,必要時的CVE。

21) SDK質量檢查表

  • 單一錯誤模型('status'、'error_code'、'trace_id'、'retriable')。
  • Taymauts/retrai/jitter,尊重「Retry-After」。
  • write的冪等性,自動的「Idempotency-Key」。
  • 遊標分段,懶惰叠代器/流。
  • WebhookVerifier具有HMAC/mTLS和重復數據消除功能。
  • 通過ENV/構造函數/參數進行配置。
  • 徽標/度量/OTel-hooki,無秘密的debug模式。
  • SemVer,≥90天解密,LTS分支。
  • 關於流行任務的完整示例和Cookbook。
  • CI中語言之間的Fich平價矩陣。

22)實施計劃(3次叠代)

1.MVP(2-3周): 基本客戶端,auth,3-5個關鍵端口,分離,單一錯誤模型,retrai/taymout;TS+Python.

2.Scale (3-5周):Java/Go/.NET、WebhookVerifier、write等效性、hooks遙測、OpenAPI模型生成。
3.Pro(連續):流媒體/SSE/gRPC,perf優化,LTS分支,擴展的Cookbook,遷移/消除工具。

23) Mini-FAQ

生成全部還是用手書寫?
生成模型/客戶端,而ergonomics(paginators,retrai,等效性,方便簽名)-手動。

是否需要單獨的async-SDK?

В Python — да (`AsyncClient`);在JS中-默認;v.NET/Java-在可能的情況下進行異步調用。

如何保持語言均等?
CI中的幻想矩陣,「poyaskam」(TS→Py→Java→Go→.NET)發行版,自動報告「落後」。

底線

強大SDK是一個單一的表面,強大的默認和可預測的合同,在所有語言中都是相同的。給開發人員安全的「開箱即用」設置、易於理解的錯誤模型、方便的分頁和驗證網絡手冊,完成此定性文檔和嚴格的semver。那麼集成將是快速的,支持是廉價的,生態系統是可持續和可擴展的。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

Telegram
@Gamble_GC
開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。