GH GambleHub

Τεχνολογία και υποδομή - Έκδοση API

Έκδοση API

1) Γιατί το χρειάζεστε

Η έκδοση είναι ένας διαχειρίσιμος τρόπος αλλαγής των συμβάσεων μεταξύ υπηρεσιών και πελατών χωρίς αναλύσεις. Σε προϊόντα με μεγάλο αριθμό ενοποιήσεων (πληρωμές, KYC/AML, παιχνίδια, τιμολόγηση, υποβολή εκθέσεων), «παλαιοί» και «νέοι» πελάτες ζουν ταυτόχρονα. Ορθή πολιτική έκδοσης:
  • μειώνει τον κίνδυνο συμβάντων κατά τη διάρκεια των απελευθερώσεων,
  • σας επιτρέπει να προγραμματίσετε βελτιώσεις και ασφάλεια,
  • παρέχει στις επιχειρήσεις προβλέψιμα χρονοδιαγράμματα για τη μετανάστευση εταίρων.

2) Ταξινόμηση των αλλαγών

PATCH (όχι διακοπή): διορθώσεις χωρίς αλλαγή της σύμβασης (προσθήκη προαιρετικών πεδίων, διορθώσεων επικύρωσης).
MINOR: αναδρομικά συμβατές επεκτάσεις (νέα τελικά σημεία, πεδία με προεπιλογή).
MAJOR (θραύση): αλλαγή της δομής, σημασιολογία ή διαγραφή πεδίων/τελικών σημείων.

Συνιστάται το SemVer 'MAJOR. MINOR. PATCH 'για τεχνουργήματα (SDK/σχήματα), ενώ ο «εξωτερικός» αριθμός API μπορεί να απλοποιηθεί (v1, v2).

3) Μοντέλα έκδοσης ανάπαυσης

1. ΣΤΟ URI:

«GET/v1/πληρωμές/{ id}»

Επαγγελματίες: διαφανείς, εφικτές, εύκολες στη διαδρομή. Κατά: επικάλυψη της τεκμηρίωσης, πιο δύσκολο να εξελιχθεί διακριτικά.

2. Στις κεφαλίδες (διαπραγμάτευση περιεχομένου):

'Αποδοχή: εφαρμογή/vnd. εταιρεία. πληρωμές. v2 + json "

Υπέρ: ευελιξία, όχι «σκουπίδια» στο URL, βολική εξέλιξη του τύπου των μέσων ενημέρωσης. Κατά: είναι πιο δύσκολο να αποσφαλματωθεί στο πρόγραμμα περιήγησης, χρειάζεστε έναν πειθαρχημένο πελάτη.

3. Σε προσαρμοσμένη κεφαλίδα:

«X-API-Version: 2» (или 'Api-Version: 2025-09-01')

Pros: μόνο στο sluice. Κατά: καμία τυποποίηση, προσεκτική με την κρύπτη.

4. Έκδοση με βάση την ημερομηνία:

Καλό για fintech/υποβολή εκθέσεων: προβλέψιμες «περικοπές» μεταβολών (π.χ. τριμηνιαία).

5. Έκδοση πόρου/μοντέλου:

Το ίδιο τελικό σημείο μπορεί να επιστρέψει διαφορετικές απόψεις: 'πεδία =...' ή 'προφίλ = liteπλήρης ". Πρόκειται για προσθήκη, όχι για αντικατάσταση της έκδοσης.

Σύσταση: για εξωτερικές ενοποιήσεις - Κεφαλίδες «URI vN» + Απόρριψη/Ηλιοβασίλεμα. για εσωτερικό - μπορείτε να «αποδεχθείτε» ή την επικεφαλίδα έκδοσης, εάν η πύλη και η πλατφόρμα την υποστηρίζουν.

4) GraphQL

Προτίμηση - καμία παγκόσμια έκδοση. Εξέλιξη μέσω προσθήκης πεδίων/τύπων και αποδυνάμωσης ('@ deprecredated (λόγος:... "")').
Σπάζοντας αλλαγές - μόνο σε «μεγάλα» παράθυρα (versioned schema namespace) με οδηγό μετανάστευσης.
Παρακολουθήστε για το «n + 1» και μην αλλάξετε την έννοια των υπαρχόντων πεδίων.

5) gRPC/Protobuf

Οι αριθμοί πεδίου είναι αμετάβλητοι. Σημειώστε τα διαγραμμένα πεδία ως «δεσμευμένα».
Προσθήκη πεδίων ως προαιρετικά με ασφαλή προεπιλογή.
Χρήση buf breaking/lint για αυτόματο έλεγχο συμβατότητας.
Πακέτα/ενότητες έκδοσης: "πληρωμές πακέτων. v1· πληρωμές «→». v2 '.

6) API γεγονότων (ΕΟΑ)

Το σύστημα εκδήλωσης είναι η ίδια σύμβαση. Αποθηκεύεται στο μητρώο Schema (Avro/JSON-Schema/Protobuf).
Θέματα και εκδόσεις: "πληρωμές. v1. επιτρεπόμενες πληρωμές «,». v2. εγκεκριμένο ".
Σπάζοντας αλλαγές - ένα νέο είδος γεγονότος ή ένα νέο θέμα.
Εγγυήσεις εξέλιξης: προς τα πίσω συμβατές για τους καταναλωτές κατά την περίοδο LTS.

7) Πολιτική εξυγίανσης και EOL

Εφαρμογή διαφανών κανόνων:
  • Αποπροσανατολισμός: ετικέτες σε changelog και σε προδιαγραφές (OpenAPI/GraphQL SDL), κεφαλίδα
  • 'Κατάθλιψη: αλήθεια' και όταν είναι δυνατόν 'Ηλιοβασίλεμα: Tue, 31 Mar 2026 00:00 GMT'.
  • Επικοινωνίες: πύλη ηλεκτρονικού ταχυδρομείου/συνεργάτη, ειδοποιήσεις webhooks, σημειώσεις έκδοσης.
  • Όροι: MINOR - 3-6 μήνες στήριξης, MAJOR - 9-18 μήνες (ανάλογα με την κρισιμότητα).
  • Χρονικά παράθυρα: καθορίστε το «API Versioning Policy».

8) Δρομολόγηση και απελευθερώσεις

Πύλη API (Kong/Apigee/Nginx/Envoy): κανόνες με πρόθεμα '/v1/', με κεφαλίδα ή μεσάζοντα.

Παράδειγμα διαδρομής:

if ($http_accept ~ "vnd.company.payments.v2") { proxy_pass http://payments-v2; }

Canary/Blue-Green/Shadow: κυλήστε τη νέα έκδοση στο 1-5% της κυκλοφορίας, συγκρίνετε μετρήσεις και καταγραφές των συμβατικών σφαλμάτων.
Σημαίες χαρακτηριστικών: Απόκρυψη συμπεριφοράς χωρίς αλλαγή συμβολαίου.
Μετάβαση μηδενικού χρόνου: με MAJOR, παρέχεται διπλή εγγραφή/ανάγνωση του σχήματος δεδομένων.

9) Έλεγχος συμβάσεων και έλεγχος συμβατότητας

OpenAPI Diff (ή swagger-diff) - Ελέγξτε ότι το MINOR/PATCH δεν σπάει σχήματα.
Φασματική επένδυση - στυλ, απαιτούμενα μεταδεδομένα (έκδοση, αποσύνθεση).
Συμβάσεις με γνώμονα τους καταναλωτές (σύμφωνο) - εξασφαλίζει ότι ο πάροχος δεν διακόπτει τους πελάτες.
σπάσιμο buf для protobuf.
Η ΚΚΠ θα πρέπει να πέσει σε ρήξη των αλλαγών χωρίς αύξηση του MAJOR.

10) Τεκμηρίωση και SDK

Έκδοση των προδιαγραφών: '/docs/api/v1/openapi. json ', '/docs/api/v2/...'.
Δημιουργήστε SDK με έκδοση (npm/maven/pypi) με SemVer και changelog.
Ο Μαρκ απέρριψε τις μεθόδους στο SDK με/υποτιμημένες σημειώσεις.

11) Παρατήρηση ανά έκδοση

Συλλογή μετρήσεων χωριστά:
  • RPS/καθυστέρηση/σφάλματα ανά έκδοση (ετικέτα 'api _ version').
  • Χάρτες χρήσης τελικού σημείου: Ποιος άλλος είναι στο v1
  • Καταχωρίσεις: «> 10% 4xx λόγω αναντιστοιχίας συμβάσεων», «παλαιοί πελάτες> X% μετά την ημερομηνία T».

12) Αποθήκευση και εκδόσεις

Η έκδοση κατά τη διαμετακόμιση βελτιώνει την cachability CDN.

Με εκδόσεις κεφαλίδων/μέσων - προσεκτικά με Vary:
  • 'Vary: Αποδοχή, X-API-Version'.
  • Μην αλλάξετε τη σημασιολογία της απόκρισης στο MINOR για να σπάσει τα κλειδιά της κρύπτης.

13) Ασφάλεια

Μην κρυπτογραφήσετε ή ράψετε την έκδοση στο JWT - η έκδοση καθορίζεται από το αίτημα, όχι από το σύμβολο.
Μην αποκαλύπτετε εσωτερικούς αριθμούς συναρμολόγησης. Χρήση του «v1/v2» για εξωτερικά μηνύματα.
Στο MAJOR, επανεξέταση επικύρωσης, όρια, συγκάλυψη PII.

14) Μετανάστευση και αυτοβοήθειες

Δημοσίευση «Οδηγός μετανάστευσης v1 → v2»: πίνακας χαρτογράφησης πεδίου, αιτήσεις δειγματοληψίας/απαντήσεις, περιπτώσεις άκρων.
Προσφέρουμε προσαρτήματα για πελάτες (CLI) που αναδεικνύουν ξεπερασμένα πεδία.
Για μεγάλους συντρόφους - sandbox με δύο εκδόσεις και ένα σύνολο δεδομένων δοκιμών.

15) Αντι-μοτίβα

«Eternal v1»: έλλειψη προθεσμιών και μετρήσεων χρήσης.
Κρυφές αλλαγές θραύσης στο MINOR/PATCH.
«Έκδοση στη συμβολοσειρά ερωτήσεων» ('? v = 2 ') - σπάει η μνήμη και η αναγνωσιμότητα.
«Ένα τελικό σημείο είναι εκατό τιμές σημαίας»: δύσκολο να ελεγχθεί/τεκμηριωθεί.

16) Κατάλογος ελέγχου εφαρμογής

1. Επιλεγμένο μοντέλο (URI/Αποδοχή/Κεφαλίδα) για εξωτερικούς και εσωτερικούς πελάτες.
2. SemVer για προδιαγραφές και SDK, αυτόματος έλεγχος θραύσης σε CI.
3. Απερήμωση/Sunset policy και υποδείγματα επικοινωνίας.
4. Δρομολόγηση πύλης + καναρίνια, ταμπλό κατά έκδοση.
5. Δοκιμές CDC/Συμβάσεις για κρίσιμες ενότητες (πληρωμές, KYC, υποβολή εκθέσεων).
6. Ο οδηγός τεκμηρίωσης/SDK/μετανάστευσης δημοσιεύεται ταυτόχρονα με την έκδοση.
7. Σχέδιο EOL με ημερομηνίες και ευθύνη.

17) Παραδείγματα

17. 1 REST (κεφαλίδες URI +)

Αίτηση:

GET /v2/withdrawals/12345
Accept: application/json
Idempotency-Key: 4a1c-…-9f
Απάντηση:
json
{
"id": "12345",
"status": "PENDING_REVIEW",
"amount": {"value": "100.00", "currency": "EUR"},
"limits": {"daily": "500.00"},
"created_at": "2025-10-02T10:00:00Z",
"links": [{"rel": "cancel", "href": "/v2/withdrawals/12345/cancel", "method": "POST"}]
}
Κεφαλίδες αποπροσανατολισμού (στο v1):

Deprecation: true
Sunset: Tue, 31 Mar 2026 00:00:00 GMT
Link: </v2/docs>; rel="successor-version"

17. 2 Διαπραγμάτευση περιεχομένου


GET /payments/987
Accept: application/vnd.company.payments.v2+json
Vary: Accept

17. 3 GraphQL (Μείωση πεδίου)

graphql type Payment {
id: ID!
amount: Money!
status: PaymentStatus!
method: PaymentMethod!
legacyCode: String @deprecated(reason: "Use field `method`")
}

17. 4 gRPC (protobuf)

proto package payments.v2;

message Withdrawal {
string id = 1;
Money amount = 2;
string status = 3; // previously enum, now string with documented values reserved 4; // legacy field removed in v1 -> v2
}

17. 5 Μοντέλο γεγονότων

Θέματα:
  • "wallet. v1. ισορροπία. επικαιροποίηση "
  • "wallet. v2. ισορροπία. αλλαγή '(νέο γεγονός με εκτεταμένο σχήμα)

Τα συστήματα αποθηκεύονται στο μητρώο, ο παραγωγός δεν δημοσιεύει γεγονότα με σύστημα που παραβιάζει τη συμβατότητα.

18) Πλαίσιο iGaming/fintech (πρακτική)

Πληρωμές: εισροή v2 για νέους παρόχους υπηρεσιών πληρωμών όπου επεκτείνεται το «status »/« decide _ reason»· στην πύλη, χαρτογράφηση v1 → v2 για την υποβολή εκθέσεων.
KYC: MINOR προσθέτει πεδίο 'pep _ screening', οι πελάτες αγνοούν v1, v2 - απαιτεί.
Υπεύθυνα παιχνίδια/όρια: MAJOR αλλάζει το μοντέλο ορίων (ημερήσια/εβδομαδιαία). Διπλή εξαγωγή σε αναφορά πριν από την EOL v1.
Υποβολή εκθέσεων στις ρυθμιστικές αρχές: καθορισμένες εκδόσεις-ημερομηνίες: «υποβολή εκθέσεων-2025-01».

19) Μίνι πολιτική (π.χ. wiki)

Υπόδειγμα: για εξωτερικά API - «URI/vN/». για εσωτερικό - "Αποδοχή:... vN + json 'ή' X-API-Version: N '.
SemVer: Οι προδιαγραφές και τα SDK δημοσιεύονται ως 'N. ελάσσονος σημασίας. έµπλαστρο '. MAJOR απαιτεί RFC/ADR.
Συμβατότητα: MINOR/PATCH - καμία αλλαγή θραύσης. Σπάζοντας → μόνο μέσω του MAJOR.
Απερήμωση/EOL: Ανακοίνωση ημέρας ≥90; Ημερομηνία λήξης στα πρωτοσέλιδα. υποκατάστημα LTS για κρίσιμους πελάτες.
Έλεγχος: Σπάσιμο OpenAPI diff/buf σε CI, CDC για ενοποιήσεις κλειδιών.
Παρατηρησιμότητα: μετρήσεις/καταγραφές με ετικέτα «api _ version».
Κυκλοφορίες: καναρίνι 5% ≥ 24 ώρες, στη συνέχεια σε στάδια έως 100% με πράσινες μετρήσεις.


Αποτέλεσμα

Η έκδοση δεν αφορά το «/v2 στο URL «, αλλά τη διαδικασία: σαφείς κανόνες εξέλιξης, αυτόματους ελέγχους συμβατότητας, ελεγχόμενες εκλύσεις και σεβασμό για την ολοκλήρωση. Εισάγετε μια σαφή πολιτική, αυτοματοποιήστε την παρακολούθηση και την παρατηρησιμότητα - και οι αλλαγές δεν θα αποτελούν πλέον απειλή για το προϊόν.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.