Logo GH

עיצוב SDK ותמיכה בשפה

1) מטרות SDK וקריטריוני הצלחה

התנסות מפתחת (DX): API אינטואיטיבי, סמנטיקה אחידה בין שפות.
אמינות: פסקי זמן/נסיגה/אידמפוטנטיות מחוץ לקופסה.
סודות, חתימות, TLS, התאמה עם סביבות proksi/企业.
תצפית: יומנים, מדדים, עקבות בכלים סטנדרטיים לשפה.
כלכלה: מינימום יציאה/מעבד, עבודת אלילים יעילה, אצוות.
יציבות: סמבר קפדני, תאימות לאחור, ענפי LTS.

2) עקרונות אדריכליים

1. לקוח רזה, חוזים חזקים: עטיפת SDK על פני פרוטוקול (REST/gRPC), ללא לוגיקה עסקית נסתרת.
2. משטח מאוחד: אותם מושגים (לקוח, בקשה, תגובה, שגיאה, פגינטור, Webh Verifier).
3. בטוח כברירת מחדל: פסקי זמן סבירים, גיבוי מעריכי + ג 'יטר, הגנה חוזרת.
4. הגדרות שכבות: ENV constructor ach file.
5. TTP/gRPC ניתן להסרה, תואם proksi/池 חיבור.
6. בדיקות: ממשקים/זיופים, הזרקת תלות, שידור חוזר.
7. שגיאה I18n: machine 'error _ code' is יציב; הודעות הן מאוזנות.
8. נגישות: asynchronous variants (בדרך כלל ”AsynClient”) במקום המתאים.
9. סודות לא נופלים ליומנים, מהדורת פיי י, ספריות קריפטו תואמות פיפס במידת הצורך.

3) שולחן תמיכה וזוגיות הזדמנויות

שפהגירסה מינימודל ביצועפלטפורמות/הפצהמצב
תסריט/JavaScriptצומת 18 +אסינק/המתנהNPM (ESM + CJS), Deno, BunGA
פיתון3. 9+סינכרון + aioPYPI (”סינכרון ”/” aio”), גלגלים מנילינוקסGA
Java11+סנכרוןמייבן סנטרל, אנדרואיד (אופציונלי)GA
לכי1. 21+סינכרון (ctx)עבור מודוליםGA
.NETNet6. 0+סינכרון/אסינקNuGET NameGA
PHP8. 1+סנכרוןמלחיןבטא
רובי3. 0+סנכרוןRubyGemsבטא
💡 API זוגיות נמדדת על ידי מטריצה אוטוגנטית: סוף נקודה רשימה/תכונה, תאריך שחרור, "יש זוגיות? ».

4) משטח בסיס API (מודל קנוני)

ישויות משותפות

לקוח: הגדרת תחבורה, מפתחות, מגשים מחדש, ווי טלמטריה.
בקשה/תגובה: מודלים בטוחים/DTO, pagination/corsors.
שגיאה: מחלקה אחת עם "status", "שגיאה _ קוד", "trace _ id'," retriable ".
Paginator/Iterator: חיפוש עצלן של דפים/מדריכים.
Webh Verifier: בדיקת HMAC/mTLS, dedup by "event _ id'.

מיני דוגמה (תסריט)

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

מיני-דוגמה (פייתון, 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/HTPTPHS _ PROXY', '.
קונסטרוקטור-עוקף ENV.
עקיפה לפי קריאה: זמן-אאוט/מגש ברמת שיטה.
TLS/mTLS: נתיב לתעודה/מפתח, מצמיד CA במידת הצורך.
בריכות חיבור: לשמור-בחיים, HTTP/2, קונטרנסי מגובש.

6) בטיחות מחוץ לקופסה

סודות: לא להיכנס, להתחבא בעקבות ערימה; Reduction ".
חתימות: HMAC עבור חוברות אינטרנט, 'X-Key-Id'/סיבוב מקשים, תמיכה עבור ”שני מפתחות” פעילים/הבאים בתור.
אידמפוטנטיות: הגדרה שקופה של 'Idempotency-Key' עבור פעולות כתיבה (restart הוא בטוח).
RBAC/Scopes: מספור/קבועים נוחים עבור סקופים.
מדיניות מח "ש: ממשקי עריכה סטנדרטיים לכריתת עצים.

7) אמינות: פסקי זמן, נסיגות, גב

פסק זמן ברירת מחדל: 10-15; חיבור 3-5.
רטריי: עבור 5xx/408/429 (כבוד 'Retry-After'), גיבוי מעריכי + jitter, retry/time limiter.
מפסק מעגל: אופציונלי ב-SDK (או המלצות שחרור צד שלישי).

כתב idempotent: אוטומטי חוזר על ידי מפתח; התנגשויות עולה '409. IDEMP_REPLAY'

8) עבודת אלילים, קורסים וזרימה

סמן/איטרטור: כוח גס עצלן, חוזר אוטומטית על שגיאות זמניות.
Keyset pagination: הזמנה יציבה '(updated_at,id)'.
תרגיל גב: הגבלה של בקשות סימולטניות; Tritasync-SDK - 'async עבור '/' ערוצים.
הזרמה (היכן שזמין): SSE/WebSocket/gRPC-stream עם חיבור אוטומטי ושכפול על ידי ”רצף”.

9) טעויות וחוזה

היררכיה אחת:
  • "Autherior" ("Autherior"), "Autherior" ("Autherior"), "Autherior" (403), "Notsited (404)", "Conflict (409)", "AuthLimit (429)", "," VAliDiDiDiDiDid IIIIIIIIIIIRI I Ci שגיאה (5xx) ".
  • "מעמד", "שגיאה _ קוד", "הודעה", "עקבות _ id'," ניתן לאחזור "," פרטים ".
  • התרגול הטוב ביותר: הודעות ניתנות לקריאה אנושית, ”שגיאה _ קוד” יציב.

10) ניבים של שפה

תסריט TypeScript/JS

גנרטורים מבוססי הבטחה לפגינציה; חבילות ESM + CJS.
רועד-עץ, פוליפילים מינימליים, בטל אותות ('אבורטולר').

פייתון

Sync + Async (aiohttp/httpx), מנהלי הקשר, מודלים 'pydantic' (או dataclases).
גלגלים linux/macOS/windows; תמיכה proxies/NO_PROXY.

Java

'עתיד' (במידת הצורך), 'ניתן לסגור באופן אוטומטי', 'משך זמן', 'מבצע'.
לקוח HTTP: "ג 'אווה. נטו. Http 'or OkHttp; SLF4J ליומנים.

go

ההקשר של ההקשר. הקשר ", http. לקוח עם תחבורה מכוונת, ממשקים לבדיקות.
שגיאה בעטיפה ("fmt. Errorf (”% w”, err), סמנטיקה של שגיאות.

NET

'HttpLightFactory', 'ביטול', 'IAincEnumable <T>'.
מדיניות פולי (retry/circuit-breaker).

... וכו 'עבור PHP/Ruby (PSR-18, Faraday/Net::: HTTP).

11) כריתת עצים, מדדים, איתור

יומנים: רמות (ECROR/INFO/DEBUG), קורלציה "trace _ id', ביטול מידע רגיש.
& gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt.
עקבות: OpenTelemetry wooks (מרווח לקריאת API, נקודת קצה, סטטוס, מאפיינים חוזרים).
Debug-mode: משתנה הסביבה 'GH _ SDK _ DEBUG = 1' - כותרות HTTP מודפסות (ללא סודות) וזמנים.

12) תיעוד ודוגמאות

מהיר 5 דקות: auth, בקשה ראשונה, עבודת אלילים, 429 עיבוד.
ספר בישול: webhooks (אימות חתימה), כתיבה אידמפוטנטית, שידור חוזר.
API: Autogen מתוך OpenAPI/Protobuf, אך עם דוגמאות ”ידניות”.
סניפטים: חתיכות קוד מוכנות למשימות פופולריות (פייתון/TS/Java/Go/NET).

13) דור נגד קידוד ידני

גישה משולבת: codegen (מודלים/לקוחות) + מדריך "pens' עבור ארגונומיקה/idempotency/paginators.
תבניות: שמות שיטה אחידים (”צור/גט/רשימה/עדכון/מחיקה”), דקירה. חתימות.
בדיקת ”תאימות גדולה” לאחר regen (CI-Gate).

14) ורסינינג, תאימות ופחיתות

SemVer: X. YZ. שבירה - גדול בלבד.
מדיניות יציבות: שחרור מינורי - הוספת שדות/שיטות, לא לשנות חוזים.
ביטול: הזמנות/תכונות @ decreted/Ussolete, אזהרות זמן ריצה פעם אחת בכל תהליך, חלון 90 יום.
ענפי LTS: backport of critfixes (אין מאפיינים חדשים).

15) שחרור ושרשרת אספקה

CI/CD: linters/formatters, unit + integration, בדיקות חוזה, e2e vs. box.
חתימת חפץ: Sigstore/GPG, checksums on floses.
פרסום: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems עם changelog ופרסום הערות.
שער SemVer: בודק אוטומטית את ההתאמה של API הציבורי (לדוגמה, apiregistry diff).

16) בדיקה (מטריצה איכותית)

יחידה: מודלים, סריאליזציה, אימות, מגשים/פסקי זמן.
חוזה: בניגוד לתוכניות OpenAPI/Protobuf (מקרים שליליים/קצוות).
אינטגרציה: vs. sandbox (idempotency, 429/5xx, webhooks).
טעינה/השריה: pagination/stream, backpressure.
פלומה: שדות/כותרות/גבולות זמן.
SDKs ישן Compat ↔ API חדש ולהיפך.
5 דקות לתפוס נסיגה במודיע.

17) מדיניות טלמטריה ופרטיות

Opptional-opt-in: אוסף של מטריצות SDK (גרסה, שפה, סטטוסים) ללא PII.
הגדרה: 'טלמטריה: off' אנונימי 'מלא' (ברירת המחדל כבויה/אנונימי).
שקיפות: תעדו מה עומד לקרות ולמה; בואו נבדוק את תיבת הניתוק.

18) ביצועים ו ־ FinOps

חבטות: לשלב שאילתות קטנות; הגבלת RPS; gzip/br.
ETAG/IF-NOTHONE-התאמה, CET מותנה.
מודלים חסכוניים: איטרטורים עצלנים במקום להעמיס הכל לזיכרון.
קונקורנסי עם גבול: ”max _ concurrency” כדי לא ”DDOS” ה-API.

19) רכיבי SDK טיפוסיים (שלדים)

שגיאה (תסריט 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 (פייתון)

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

WebhaldVerifier (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 וקהילה

SLA by SDK: באגים קריטיים - תיקון זמן הגעה משוער, ערוצי תקשורת, מטריצת תאימות (SDK↔API).
הוצאה של תבניות: באג/תכונה/שאלה, מיון אוטומטי לפי שפה/גירסה.
מפת דרכים/תוויות: ”בעיה ראשונה טובה”, ”עזרה רצויה”.
מדיניות אבטחה: "אבטחה. md ', ערוץ לדיווח פגיעות, CVE במידת הצורך.

21) רשימת איכות SDK

[ ] שגיאת מודל יחיד ("סטטוס", "שגיאה _ קוד", "trace _ id'," retrible ").
[ ] פסקי זמן/נסיגה/ג 'יטר, כבוד ל - Retry-After ".
[ ] Idempotency לכתוב, אוטומטי 'Idempotency-Key'.
[ ] הסמן, איטרטורים עצלנים/זרמים.

Webh Verifier עם HMAC/mTLS ושכפול.

[ ] תצורה באמצעות ENV/קונסטרוקטור/פרמטרים.
[ ] כריתת עצים/מדדים/קרסים אוטל, מצב דיבוג ללא סודות.
[ ] SEMVER, צמצום של 90 ימים, סניפי LTS.
[ ] דוגמאות שלמות וספר בישול על משימות פופולריות.
[ מטריצת זוגיות ] בין שפות ב ־ CI.

22) תוכנית יישום (3 איטרציות)

1. MVP (2-3 שבועות): לקוח בסיסי, auth, 3-5 נקודות מפתח, pagination, מודל שגיאה יחיד, retrai/timeouts; TS + פייתון.
2. סקאלה (3-5 שבועות): Java/Go/NET, WebhaldVerifier, idempotency woks, telemetry wooks, יצירת מודלים מ-OpenAPI.
3. Pro (רציף): הזרמה/SSE/gRPC, אופטימיזציות perf, ענפי LTS, ספר בישול מורחב, כלי נדידה/צלילה.

23) מיני ־ FAQ

ליצור הכל או לכתוב עם הידיים?
יצירת מודלים/לקוחות, וארגונומיקה (פגינטורים, מגשים מחדש, אידמפוטנטיות, חתימות נוחות) - ידנית.

האם אני צריך Async-SDK נפרד?
Structure Python - exynclient (”לקוח”); ב JS - כברירת מחדל; V.NET/Java - שיחות אסינכרוניות במידת האפשר.

איך לשמור על זוגיות של שפות?
תכונת המטריקס ב-CI, משחררת את ”by belts” (TS # Py # Java # Go .NET) עם דיווח אוטומטי ”שגר מאחור”.

סך הכל

SDK חזק הוא משטח יחיד, ברירת מחדל אמינה וחוזים צפויים זהים בכל השפות. תן למפתחים הגדרות בטוחות מחוץ לתיבה, מודל שגיאה מובן, התאמה נוחה ואימות של חוברות אינטרנט, להשלים זאת עם תיעוד באיכות גבוהה וסמבר קפדני. אז האינטגרציה תהיה מהירה, התמיכה זולה, והמערכת האקולוגית ברת קיימא ומספקת.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.