GH GambleHub

Տեխնոլոգիան և ենթակառուցվածքը բացատրում են API տարբերակումը

API տարբերակումը

1) Ինչո՞ ւ է դա անհրաժեշտ

Տարբերակումը կառավարվող միջոց է փոխելու ծառայությունների և հաճախորդների միջև պայմանագրերը առանց խափանումների։ Մեծ թվով ինտեգրիաներով (վճարումներ, KYC/AML, խաղեր, բիլինգ, հաշվետվություններ) միաժամանակ ապրում են «հին» և «նոր» հաճախորդները։ Տարբերակի ճիշտ քաղաքականությունը

նվազեցնում է թողարկման ռիսկը,

թույլ է տալիս պլանավորել բարելավումներ և անվտանգություն,

բիզնեսին տալիս է գործընկերների միգրացիայի կանխատեսելի ժամկետներ։

2) Փոփոխությունների դասակարգում

PATCH (ոչ թե կոտրող) 'առանց պայմանագրի փոփոխության (ավելացնելով արտանետվող դաշտերը, վալիդացիայի ֆիքսները)։

MINOR (ընդարձակող) 'back-compatible ընդարձակումը (նոր endpoints, դաշտեր 105)։

MAJOR (կոտրող) 'կառուցվածքի, սեմանտիկայի կամ դաշտերի/էնդպոինտների հեռացման փոփոխություն։

Խորհուրդ է տալիս SemVer 'MAJOR-ը։ MINOR. PATCH 'արտեֆակտների համար (MSK/սխեմա), մինչդեռ API-ի «արտաքին» համարը կարող է պարզեցվել (v1, v2)։

3) REST տարբերակման մոդելները

1. URI-ՈՒՄ

`GET /v1/payments/{id}`

Պլյուսներ ՝ զզվելի, քեշիրումո, հեշտ է ուղղել։ Մինուսները 'փաստաթղթերի կրկնօրինակումը, ավելի բարդ է զարգացնել։

2. Վերնագրերում (ente negotiation)

`Accept: application/vnd. company. payments. v2+json`

Պլյուսներ 'ճկունություն, «աղբի» բացակայություն URL-ում, մեդիատիպի հարմար էվոլյուցիա։ Մինուսներ 'ավելի դժվար է զննարկչի մեջ բանավեճը, անհրաժեշտ է կարգապահ հաճախորդ։

3. Կաստոմային վերնագրում

`X-API-Version: 2` (или `Api-Version: 2025-09-01`)

Պլյուսներ 'պարզապես դարպասի վրա։ Մինուսներ 'ոչ ստանդարտ, զգույշ քեշի հետ։

4. @-@ ամսաթիվը (date-based)

Լավ է fintech/հաշվետվության համար 'կանխատեսելի «կտրվածքներ» փոփոխությունների համար (օրինակ, եբեքվարտալ)։

5. Ռեսուրսի/մոդելի տարբերակումը

Նույն էնդպոինտը կարող է վերադարձնել տարբեր գաղափարներ '«fields =...» կամ' profile = litefull`. Սա ավելացում է, ոչ թե տարբերակի փոխարինումը։

Առաջարկություն ՝ արտաքին ինտեգրման համար '"URI vN' + Deprecation/Sunset վերնագրեր; ներքին, դուք կարող եք «Accept» կամ տարբերակի վերնագիր, եթե դարպասը և պլատֆորմը աջակցում են դա։

4) GraphQL

Նախընտրությունը առանց գլոբալ տարբերակների։ Էվոլյուցիան դաշտերի/տեսակների ավելացման և ապակայունացման միջոցով (@ deprecated (reason: "...)։

Կոտրող փոփոխությունները միայն «մեծ» պատուհաններում (versioned schema namespace) միգրացիոն անջատողական տան հետ։

Հետևեք «n + 1» -ին և չփոխեք գոյություն ունեցող դաշտերի meaning։

5) gRPC / Protobuf

Դաշտերի համարները անփոփոխ են։ Հեռավոր դաշտերը տեղադրեք որպես «reserved»։

Ավելացրեք դաշտերը որպես optional անվտանգ պարամետրերով։

Օգտագործեք buf breaking/lint ավտոմատ ստուգման համար։

Տարբերեք փաթեթները/մոդուլները '"package payments։ v1;` → `payments. v2`.

6) Իրադարձական API (EDA)

Իրադարձության սխեման նույն պայմանագիրն է։ Պահպանեք այն Schema Registry-ում (Avro/JSON-Schema/Delobuf)։

Կոտրող փոփոխությունները իրադարձության նոր տեսակն են կամ նոր կացինը։

Տոպիկները և տարբերակները ՝ «payments»։ v1. authorized`, `payments. v2. authorized`.

Էվոլյուցիայի երաշխիքները 'backward-compatible հյուպատոսների համար LTS-ի ընթացքում։

7) Ապակայունացման քաղաքականությունը և EOL-ը

Ներդրեք թափանցիկ կանոնները

Deprecation: տեղադրված է changelog-ում և մասնագիտություններում (OpenAPI/GraphQL SYL), վերնագիրը

«Deprecation: 108» և երբ հնարավոր է «Sunset: Tue, 31 Mar 2026 00:00 GMT»։

Հաղորդակցություն ՝ email/գործընկեր պորտալ, webhooks-ծանուցումներ, rele.notes։

Ժամկետները ՝ MINOR - 3-6 ամիս աջակցություն, MAJOR-9-18 ամիս (կախված է քննադատությունից)։

Ժամանակավոր պատուհաններ 'գրանցեք API տարբերակման քաղաքականության մեջ։

8) Միկրոօրգանիզացիա և պոլիմերներ

API Gateway (Kong/Apigee/Nginx/Envoy) 'նախածննդյան կանոնները '/v1/, վերնագրով կամ մեդիա։

Մրցույթի օրինակը


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

Canary/Blue-Green/Shadow: Նոր տարբերակը 1-5% ռուբլով, համեմատեք պայմանագրային սխալների չափումները և լույսերը։

Feature Flags: Մենք թաքցնում ենք վարքագիծը առանց պայմանագրի փոխելու։

Zero-downtime-ը նշում է, որ MAJOR-ի դեպքում տրամադրեք կրկնակի ձայնագրություն/կարդալ (dult-write/read) տվյալների սխեմաները։

9) Պայմանագիր-փորձարկումը և վերահսկումը։

OpenAPI Diff (կամ swagger-diff) - նշելով, որ MINOR/PATCH-ը չի կոտրում սխեմաները։

Spectral linting-ը ոճն է, պարտադիր մետատվյալներ (տարբերակը, Deprecation)։

Consumer-Driven Disracom (Pact) - երաշխավորում է, որ պրովայդերը չի կոտրում հաճախորդներին։

buf breaking для protobuf.

CI-ը պետք է ընկնի կոտրող փոփոխությունների ժամանակ առանց MAJOR-ի։

10) Մոսկվա և MSK K

Արտադրեք MSK-ը տարբերակներով (npm/maven/pypi) SemVer-ի և changelog-ի հետ։

Տարբերեք մեջքերը '"/docs/api/v1/openapi։ json`, `/docs/api/v2/…`.

Միջամտեք հնացած մեթոդներին MSK-ում/Deprecated-ում։

11) Observability-ը տարբերակով

Հավաքեք մետրերը առանձին

RPS/լատենտ/սխալներ տարբերակը («appi _ version» լեյբլ)։

Էնդպոինտների օգտագործման քարտեզները 'ո՞ վ է v1-ի վրա։

Ալերտներ ՝ «> 10% 4xx due to ww.ract mismatch», «հին հաճախորդները> X% T ամսաթվից հետո»։

12) Կատարումը և տարբերակները

Ճանապարհի տարբերակը բարելավում է CDN-ի հավասարակշռությունը։

Վերնագրի/մեդիատիպի տարբերակներում 'ուշադիր Vary։

`Vary: Accept, X-API-Version`.

Մի փոխեք պատասխանը MINOR-ում, որպեսզի կոտրեք քեշ-բանալիները։

13) Անվտանգություն

Մի ծածկագրեք և չփորձեք տարբերակը JWT-ում, տարբերակը որոշում է հարցումը, ոչ թե հոսքը։

Մի բացեք ներքին հավաքման համարները։ Արտաքին հաղորդագրություններում օգտագործեք «v1/v2»։

MAJOR-ի դեպքում վերանայեք validation, limits, PII դիմակավորում։

14) Մոսկվան և օգնականները

Հրապարակեք «Migration Guide v1 nov2» 'դաշտերի թեմերի աղյուսակը, հարցումների/պատասխանների օրինակները, edge-cass։

Դուք առաջարկում եք ոսպնյակներ հաճախորդների համար (CLI), որոնք լուսավորում են հնացած դաշտերը։

Մեծ գործընկերների համար 'sandbox, երկու տարբերակով և թեստային-դանասեթով։

15) Anti-patterna

«Հավիտենական v1» 'dedlines-ի բացակայությունը և օգտագործման մետրը։

Թաքնված կոտրող փոփոխությունները MINOR/PATCH-ում։

«Query string» («? v = 2») - կոտրում է քեշը և կարդալը։

«Մեկ էնդպոինտ հարյուր դրոշի արժեքներ է», դժվար է փորձարկել/փաստաթղթավորել։

16)

1. Ընտրվել է մոդել (URI/Accept/Header) արտաքին և ներքին հաճախորդների համար։

2. SemVer-ը հատուկ և SDK-ի համար, ավտոմատ breaking-71-ը CI-ում։

3. Deprecation/Sunset քաղաքականությունը և հաղորդակցման ձևանմուշները։

4. Gateway-միկրոօրգանիզացիա + kanareks, dashbords տարբերակներով։

5. CDC/Medract tes.ru կրիտիկական վճարումների համար (վճարումներ, KYC, հաշվետվություններ)։

6. Express/MSK/միգրացիոն ուղեցույցը հրապարակվում է միաժամանակ ֆորումի հետ։

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 Content Negotiation (մեդիա)


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. balance. updated`

`wallet. v2. balance. changed '(նոր իրադարձություն ընդլայնված սխեմայով)

Սխեմաները պահվում են Registry-ում, արտադրողը չի հրապարակում իրադարձություններ սխեմայի հետ, որը խախտում է համատեղելիությունը։

18) iGaming/fintech կոնտեքստը (պրակտիկա)

Վճարումները 'v2-ի ներդրումը նոր PBS-ի համար, որտեղ «status »/« decium _ reason» -ը ընդլայնված է։ նավի վրա mapping v1-v2 հաշվետվության համար։

KYC: MINOR ավելացնում է «pep _ screening» դաշտը, v1 հաճախորդները անտեսում են, v2-ը պահանջում է։

Պատասխանատու խաղեր/լիմիտներ: MAJOR-ը փոխում է սահմանների մոդելը (ամենօրյա/շաբաթ)։ Կրկնակի էքսպորտը զեկույցներում մինչև EOL v1։

Կարգավորողների հաշվետվությունները 'ֆիքսված տարբերակները' «reporting-2025-01»։

19) Մինի քաղաքականությունը (օրինակ wiki-ի համար)

Մոդել 'արտաքին API-ի համար' «URI/vN/»; Ներքին համար 'Accept: ... vN + json' կամ 'X-API-Version: N'։

SemVer: Հատկությունները և SDK-ը հրապարակվում են որպես 'N. minor. patch`. MAJOR-ը պահանջում է RFC/ADR։

Համատեղելիությունը ՝ MINOR/PATCH - առանց կոտրող փոփոխությունների։ Կոտրող մուտքը միայն MAJOR-ի միջոցով։

Deprecation/EOL: Գովազդը 90 օրվա ընթացքում։ Sunset-ամսաթիվը վերնագրերում։ LTS-ճյուղը կրիտիկական հաճախորդների համար։

Վերահսկողությունը 'OpenAPI diff/buf breaking CI, CDC հիմնական ինտեգրման համար։

Observability: metrics/logs '«api _ version» պիտակով։

Ալգորիթմներ ՝ canary 5 տոկոսը 210 ժամ, ապա ՝ մինչև 100 տոկոսը կանաչ մետրիներում։


Արդյունքը

Տարբերակումը ոչ թե URL-ում «/v2 »-ի մասին է, այլ գործընթացի մասին 'էվոլյուցիայի ակնհայտ կանոնները, կոդավորման ավտոմատ ստուգումները, կառավարվող օրինագծերը և հարգանքը ինտեգրման նկատմամբ։ Մուտքագրեք հասկանալի քաղաքականություն, ավտոմատիզացրեք վերահսկողությունը և դիտարկումը, և փոփոխությունները կդադարեն սպառնալ ապրանքին։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։