किनकि सेवाहरू स्वतन्त्रतापूर्वक तैनात हुन्छन्, तपाइले कहिले पनी कलर्सहरू एकै समयमा अपग्रेड गर्ने कुरा अनुमान गर्न सक्नुहुन्नन्। API संस्करण साथै पछाडिको अनुकूलता उत्पादकहरूलाई मौजूदा उपभोक्ताहरूलाई तोड्न बिना विकास गर्न दिन्छ।
किनकि सेवाहरू स्वतन्त्रतापूर्वक तैनात हुन्छन्, तपाइले कहिले पनी कलर्सहरू एकै समयमा अपग्रेड गर्ने कुरा अनुमान गर्न सक्नुहुन्नन्। API संस्करण साथै पछाडिको अनुकूलता उत्पादकहरूलाई मौजूदा उपभोक्ताहरूलाई तोड्न बिना विकास गर्न दिन्छ।
| रणनीति | उदाहरण |
|---|
| URI path | GET /v2/orders/42 |
| Header | Accept: application/vnd.api.v2+json |
| Schema evolution | क्षेत्रहरू थपें, कहिल्यै हटाउनुहोस्/पुनः नामकरण नगर्नुहोस् |
NON-BREAKING (safe):
✓ add a new optional field
✓ add a new endpoint
✓ add a new enum value (if clients tolerate unknowns)
BREAKING (needs a new version):
✗ remove or rename a field
✗ change a type or make a field required
✗ change semantics of an existing field
message Order {
string id = 1;
double total = 2;
string currency = 3; // NEW field 3 — old clients ignore it safely
}
क्षेत्र संख्याहरू, नामहरू नभई, तार प्रारूप परिभाषित गर्छन्, त्यसैले क्षेत्रहरू थपिएको पछाडिको अनुकूल छ।
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
कहिले पनी संस्करण हटाउनुहोस् जब वास्तविक ट्राफिक अझै पनि यो प्रयोग गरिरहेको छ। अवकाश गर्नु अगि प्रयोग ट्र्याक गर्नुहोस्।
स्वतन्त्र तैनातकर्मता काम गर्छ केवल यदि उत्पादकले प्रत्येक उपभोक्ताको रिलीज समन्वय नगरी परिवर्तन शिप गर्न सक्छ।
अतिरिक्त परिवर्तनको लागि डिजाइन गरिएको र बसन्तकालीन माइग्रेशनको समयमा पुरानो संस्करणहरू समर्थन गरिएको कुरा यो आत्मनिर्भरता सुरक्षित गर्छ बजाय नाजुक बिग-ब्याङ अपग्रेडमा बाध्य गर्ने।