Skip to content
 
Gentlent Logo

Pridávanie náhodného reťazca k našim JSON API: Budovanie pre rozšíriteľnosť od prvého dňa

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.

Tom KleinTom Klein · ~ 4 min čítania
 

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.


Problém: Rigidné implementácie klientov

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ú:

  • Hardkodovanie indexov polí namiesto použitia názvov polí
  • Odmietanie odpovedí, ktoré obsahujú neznáme polia
  • Robenie predpokladov o poradí polí
  • Implementácia príliš prísnej validácie, ktorá zlyháva pri nových vlastnostiach

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.


Poučenie od odborníkov

Náš prístup čerpá inšpiráciu z dvoch pozoruhodných príkladov v technologickom priemysle:


Randomizácia TLS Extensions v Chrome

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.


Randomizácia adresára inštitúcie Let's Encrypt

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.


Naša implementačná stratégia

Nasledujúc tieto príklady, implementujeme injektovanie náhodných polí v našich JSON API odpovediach. Takto to funguje:


Generovanie náhodných polí

{
  "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"
  }
}


Kľúčové charakteristiky

  • Náhodné názvy polí: Každá odpoveď obsahuje 1-2 polia s náhodne generovanými názvami
  • Predvídateľné hodnoty: Hodnoty polí smerujú k dokumentácii, ktorá vysvetľuje účel
  • Vloženie do hĺbky: Náhodné polia sa objavujú na úrovni koreňa a v rámci vnorených objektov
  • Odkazy na dokumentáciu: Hodnoty polí odkazujú na naše usmernenia ohľadom rozšíriteľnosti API


Usmernenia implementácie

  • Názvy polí nasledujú vzor:
    randomField_[5-character-string]
    alebo
    randomProperty_[5-character-string]
  • Hodnoty vždy odkazujú na našu dokumentáciu, aby pomohli vývojárom pochopiť účel
  • Náhodné polia sa generujú na strane servera pre každú odpoveď
  • Polia sú vkladané na rôzne úrovne vnorenia na testovanie komplexného rozboru


Výhody pre dlhodobé zdravie API

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í.


Rozsah implementácie

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.


Najlepšie praktiky pre vývojárov klientov

Ak vytvárate klientov, ktorí konzumujú naše API, tu sú odporúčané prístupy:

✅ Robiť:

  • Parsovať JSON odpovede pomocou názvov polí, nie pozícií
  • Ignorovať neznáme polia s gráciou
  • Používať správne knihovny na parsovanie JSON, ktoré spracúvajú rozšíriteľnosť
  • Implementovať flexibilné spracovanie odpovedí

❌ Nerobiť:

  • Hardkodovať pozície polí alebo indexy polí
  • Odmietať odpovede obsahujúce neznáme vlastnosti
  • Robiť predpoklady o poradí polí
  • Implementovať prísnu validáciu, ktorá zlyháva na nových poliach


Vzhlad do budúcnosti

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.

Zdieľajte článok


Tom KleinCEO
Gentlent GmbH

GentlentZákaznícka podporasupport@gentlent.com



Nedávne články

Chcete sa dozvedieť viac?
Dajte nám vedieť ešte dnes.

 
GentlentOficiálna webová stránka Gentlent. Oficiálne webové stránky Gentlent sú vždy prepojené z našej webovej stránky gentlent.com, alebo obsahujú rozšírený overený certifikát.
Skyline Dusseldorf