API-versionering og bagudkompatibilitet
Udvikl gRPC-mikrotjeneste-API'er sikkert på tværs af mange teams ved hjælp af versioneringsstrategier og protobuf-kompatibilitetsregler, så gamle klienter aldrig går i stykker.
API-versionering og bagudkompatibilitet er en gratis gRPC og højtydende API'er-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i gRPC og højtydende API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.
Udfordringen ved versionering
I en samling af mikrotjenester er snesevis af klienter afhængige af en tjeneste. Du kan ikke udrulle en ny version til dem alle på én gang, så API'en skal kunne ændres uden at bryde eksisterende kaldere.
Kompatibilitet over forbindelsen i Protobuf
Protobuf er tolerant: Ukendte felter ignoreres, og manglende felter får standardværdier. Derfor er additive ændringer sikre som udgangspunkt.
Sikre kontra brydende ændringer
Sikre: Tilføj felter, tilføj metoder, tilføj enum-værdier. B rydende: Fjern eller omdøb felter, ændr felttyper, genbrug tagnumre, ændr metodesignaturer.
Genbrug aldrig tagnumre
Feltets tagnumre identificerer felter over forbindelsen. Hvis du genbruger et udfaset nummer, ødelægger du gamle data. Markér fjernede felter som reserved for at låse nummeret.
message User {
reserved 3, 5;
reserved 'old_name';
}Pakke-baseret versionering
Ved reelt brydende ændringer skal du versionere pakken. Den gamle og den nye version kan eksistere side om side, så klienterne kan migrere i deres eget tempo.
package myapp.orders.v1;
// later, breaking change:
package myapp.orders.v2;Kørsel af v1 og v2 sammen
Serveren registrerer begge tjenesteversioner. Nye klienter kalder v2, mens gamle klienter fortsætter med at bruge v1, indtil de opgraderes.
ordersv1.RegisterOrdersServer(s, &v1impl{})
ordersv2.RegisterOrdersServer(s, &v2impl{})Udfasning af felter og metoder
Markér elementer som udfasede for at advare kaldere, før de fjernes, så de får et migreringsvindue.
string legacy_id = 2 [deprecated = true];Udvikling af enum'er
Reservér altid enum-værdien 0 som UNSPECIFIED. Tilføj nye værdier til sidst; gamle klienter mapper sikkert ukendte værdier til deres standardværdi i proto3.
enum Status {
STATUS_UNSPECIFIED = 0;
ACTIVE = 1;
ARCHIVED = 2;
}Automatiske kompatibilitetstjek
Værktøjer som Buf kontrollerer proto-ændringer i CI og afviser brydende redigeringer før sammenfletning, så kompatibilitet håndhæves automatisk på tværs af teams.
buf breaking --against '.git#branch=main'Skemaregistre
Et centralt register (f.eks. Buf Schema Registry) gemmer versionerede proto-filer, så alle teams bruger én fælles sandhedskilde og genererer ensartede stubs.
Migreringsstrategi
En ren migrering ser sådan ud: Tilføj v2 ved siden af v1, flyt klienterne gradvist, overvåg brugen af v1, og udfas først v1, når trafikken er nået ned på nul.
Hurtigt tjek
Test din viden om versionering.
Opsummering
Du har lært om API-versionering og kompatibilitet:
- Tilføjelser er sikre over forbindelsen; fjernelser, omdøbninger og typeændringer bryder kompatibiliteten
- Genbrug aldrig tagnumre — markér dem som
reserved - Versionér pakker (v1/v2) ved brydende ændringer, og kør begge versioner
- Reservér enum 0 som UNSPECIFIED, og udfas før fjernelse
- Håndhæv kompatibilitet med Buf og et skemaregister
Lær gRPC og højtydende API'er med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “API-versionering og bagudkompatibilitet” gratis?
Ja — hele teksten til “API-versionering og bagudkompatibilitet” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af gRPC og højtydende API'er-kurset, skal du opgradere til CoddyKit PRO. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “API-versionering og bagudkompatibilitet”?
Udvikl gRPC-mikrotjeneste-API'er sikkert på tværs af mange teams ved hjælp af versioneringsstrategier og protobuf-kompatibilitetsregler, så gamle klienter aldrig går i stykker. Du øver dig i gRPC og højtydende API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på gRPC og højtydende API'er?
Der kræves ingen tidligere erfaring. gRPC og højtydende API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “API-versionering og bagudkompatibilitet”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne gRPC og højtydende API'er-lektion?
Ja. Alle gRPC og højtydende API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Design af gRPC-mikrotjenester
- Eventdrevne gRPC-arkitekturer
- Interoperabilitet på tværs af sprog
- API-versionering og bagudkompatibilitet