Zistite, prečo pridávanie náhodných polí do JSON API zabezpečuje lepšiu rozšíriteľnosť klienta a zabraňuje hardcoding implementácií. Objavte osvedčené postupy pre budúcnosť-vzdorný dizajn API inšpirovaný Chrome a Let's Encrypt.
Pri navrhovaní API je jednou z najväčších výziev, ktorej čelia vývojári, zabezpečenie, že budúce zmeny nepoškodia existujúce implementácie klientov. Príliš často sme videli dobre mienených klientov, ktorí analyzujú JSON odpovede pevným spôsobom, hardkodujú pozície polí alebo robia predpoklady o štruktúre odpovede, čo neskôr zabraňuje evolúcii API.
Preto sme sa rozhodli pridať náhodné polia do našich JSON API odpovedí - proaktívny prístup, inšpirovaný úspešnými implementáciami od Chrome a Let's Encrypt.
JSON API sú navrhnuté tak, aby boli rozšíriteľné. Špecifikácia JSON prirodzene podporuje pridanie nových polí bez ohrozenia existujúcich analyzátorov. Avšak realita je zložitejšia. Mnohí vývojári klientov, či už kvôli časovým obmedzeniam, nedostatku skúseností alebo nedorozumeniu, vytvárajú implementácie, ktoré sú netolerantné voči zmenám.
Bežné problematické vzory zahŕňajú:
Tieto implementačné voľby vytvárajú významnú záťaž pre správcov API. Každé nové pole alebo vylepšenie sa stáva potenciálne rizikovou zmenou, dusí inovácie a zabraňuje prirodzenej evolúcii API.
Náš prístup čerpá inšpiráciu z dvoch pozoruhodných príkladov v technologickom priemysle:
Chrome implementoval permutáciu TLS ClientHello rozšírenia, aby zabránil serverom očakávať určitý pevný poriadok rozšírení, čo by mohlo obmedziť Chrome v uskutočňovaní budúcich úprav jeho implementácie TLS. Náhodným usporiadaním TLS rozšírení sa Chrome postaral o to, aby serverové implementácie nemohli spoliehať na konkrétne usporiadanie, čím sa celý TLS ekosystém stal robustnejším voči budúcim zmenám.
Let's Encrypt pridala klúče s náhodne generovanými názvami do svojho adresárového koncového bodu, aby odradila vývojárov klientov od písania klientov takým spôsobom, ktorý im v budúcnosti zabraňuje pridávať nové klúče. Toto proaktívne opatrenie riešilo výzvu, ktorú čelili s prvými ACME klientmi netolerantnými voči novým poliam, ktoré sťažovali zavedenie nových funkcií.
Oba prístupy zdieľajú spoločnú filozofiu: zaviesť variabilitu skoro, aby sa zabránilo zafixovanosti správania klientov.
Nasledujúc tieto príklady, implementujeme injektovanie náhodných polí v našich JSON API odpovediach. Takto to funguje:
{ "success": true, "result": { "email": "user@gentlent.com", "i5dgf3": "https://gentl.net/random-api", "id": "1647603024929000000", "profile_img": "https://www.gravatar.com/avatar/4584d61ab0bef9513f93a273ac985488?r=pg&d=identicon&s=128", "reseller_id": "12", "support_plan": "basic", "username": "user" } }
randomField_[5-character-string]
randomProperty_[5-character-string]
Tento prístup poskytuje niekoľko kľúčových výhod:
Okamžitá spätná väzba: Klienti, ktorí zlyhajú na neznámých poliach, zlyhajú okamžite počas vývoja, nie mesiace neskôr, keď pridáme nové funkcie.
Vzdelávanie vývojárov: Odkazy na dokumentáciu vo hodnotách náhodných polí pomáhajú vzdelávať vývojárov klientov o správnych praktikách parsovania JSON.
Odolnosť ekosystému: Normalizovaním prítomnosti neznámých polí vytvárame robustnejší ekosystém, ktorý sa dokáže prispôsobiť budúcim zmenám.
Zníženie zlomových zmien: Budúce vylepšenia API sa stanú prírastkovými namiesto zlomových, čím sa zníži zložitosť verzií.
V súčasnosti táto randomizácia ovplyvňuje iba naše odpovede JSON objektov. Ostatné formáty API a koncové body zostávajú nezmenené, kým nezhodnotíme účinnosť tohto prístupu. Monitorujeme spätnú väzbu od klientov a rozšírime implementáciu na základe výsledkov.
Ak vytvárate klientov, ktorí konzumujú naše API, tu sú odporúčané prístupy:
✅ Robiť:
❌ Nerobiť:
Táto zmena predstavuje náš záväzok budovať API, ktoré sa dokážu vyvíjať elegantne v priebehu času. Zavedením kontrolovanej variability teraz, zabezpečujeme, že budúce vylepšenia nebudú znamenať zlomové zmeny pre dobre implementovaných klientov.
Náhodné polia slúžia ako jemná, ale trvalá pripomienka, že JSON API sú navrhnuté tak, aby boli rozšíriteľné. Klienti, ktorí správne spracúvajú tieto polia, sa bezproblémovo adaptujú na budúce vylepšenia API, zatiaľ čo tí, ktorí nie, dostanú okamžitú spätnú väzbu počas vývoja.
Veríme, že tento proaktívny prístup, inšpirovaný úspešnými implementáciami v širšom technologickom ekosystéme, povedie k robustnejšej a dôveryhodnejšej API platforme pre všetkých našich používateľov.
Tom KleinCEO
Gentlent GmbH
GentlentZákaznícka podporasupport@gentlent.com