GraphQL.cz/Fórum/Jak přidat nový field v GraphQL, aniž bych ztratil staré dotazy?

Jak přidat nový field v GraphQL, aniž bych ztratil staré dotazy?

Mám takový problém a jsem si jistý, že se v tomhle někdo z vás vyzná. Pracuji na projektu, kde používáme GraphQL API a teď bych potřeboval přidat nový field do existujícího typu. Jenže mám strach, že když ten nový field přidám, tak nějakým způsobem ovlivním stávající dotazy, které už běží a jsou nasazené v produkci. Nikdy jsem s tímhle neměl zkušenosti, takže nevím, jak to udělat správně a zároveň zachovat kompatibilitu se starými dotazy. Je vůbec možné přidat nový field bez toho, abych musel nějak zásadně měnit už existující schéma? Myslím si, že by bylo fajn mít možnost přidávat nové věci, ale aby to neovlivnilo ty staré. Jak to řešíte? Máte nějaké tipy nebo best practices? Mě zajímalo třeba, jestli se dá použít nějaký ústupkový mechanismus nebo něco podobného. Děkuju za každou radu, protože se v tomhle opravdu nevyznám a potřeboval bych to udělat co nejdřív.

146 slov
1.5 minut čtení
18. 11. 2024
Adam Hloušek

Přidání nového fieldu v GraphQL je docela jednoduchý proces a nemělo by to ovlivnit stávající dotazy. Základní myšlenka GraphQL je, že je navrženo tak, aby bylo zpětně kompatibilní. Takže když přidáš nový field do existujícího typu, staré dotazy budou pořád fungovat, protože se nemění. Jenom se prostě přidá nová možnost, co si klienti můžou vyžádat.

Můžeš vytvořit nový resolver pro ten nový field a pak ho přidat do schématu. Je dobrý mít na paměti, že pokud bys chtěl udělat nějaké zásadnější změny (třeba odstranit nebo změnit strukturu existujících fieldů), tak to by mohlo stávající dotazy rozbít. Ale jen přidávání je v pohodě.

Tipy: Zkus postupovat iterativně a nejdřív testovat na lokální nebo staging verzi API. Můžeš taky udělat verziing API, pokud bys někdy v budoucnu potřeboval větší změny. Ale pro teď klidně přidej ten new field a neměj strach.

137 slov
1.4 minut čtení
24. 8. 2023
Jakub Dušek

Přidání nového fieldu v GraphQL by nemělo ovlivnit stávající dotazy. GraphQL je navržený tak, aby byl zpětně kompatibilní, což znamená, že když přidáš nový field do typu, staré dotazy by měly fungovat bez problémů. Můžeš prostě updateovat schéma a přidat ten nový field, a klidně ho můžeš udělat jako nullable, pokud chceš, aby byl volitelný.

Pokud se bojíš o stávající aplikace, nejlepší je mít testy, které ověřují, že staré dotazy stále vrací očekávané výsledky. A pokud chceš mít absolutní jistotu, můžeš vytvořit novou verzi API, ale to už je trošku víc práce. Jinak doporučuju sledovat i dokumentaci k GraphQL a best practices ohledně verzování a správy schémat. Takže v pohodě, neboj se přidat ten nový field!

116 slov
1.2 minut čtení
30. 11. 2024
Kristýna Procházková

Přidání nového fieldu v GraphQL je v pohodě a nemělo by to ovlivnit stávající dotazy. GrafQL je navržený tak, aby byl zpětně kompatibilní. Když přidáš nový field, staré dotazy budou fungovat, protože se nic nemění na tom, co už existuje. Nové fieldy prostě doplní možnosti pro ty, co chtějí víc dat. Můžeš klidně přidat i volitelné fieldy, které vrátí null pokud nejsou nastavené. Je dobrý si pohlídat, aby si měl správně typy a dokumentaci aktualizovanou pro nové fieldy, aby vývojáři věděli, co mohou použít. Ale jinak se neboj, staré dotazy by měly jet bez problémů.

95 slov
1 minut čtení
16. 9. 2023
Jaroslava Pospíšilová
GraphQL.cz/Články/API design
Versioning strategie v GraphQL: Jak se vyhnout problémům s kompatibilitouObjevte efektivní strategie verzování pro GraphQL, které umožňují přidávat nové funkce a zlepšovat API bez narušení stávajících klientů.
1000 slov
10 minut čtení
25. 3. 2020
Martin Černý
Přečíst článek
Podobné otázky