GraphQL.cz/Fórum/Jak verzovat API v GraphQL bez problémů s databází?

Jak verzovat API v GraphQL bez problémů s databází?

Nedávno jsem se začal zaobírat implementací GraphQL do našich projektů a narazil jsem na otázku, která mě trápí už nějakou dobu. Jak správně verzovat API v GraphQL, aniž bych měl problémy s databází? Zatímco u REST je verzování docela běžné a většinou se to řeší pomocí URL, v GraphQL to není tak jednoduché. Přiznám se, že se trochu ztrácím v tom, jak uchopit různé verze dotazů a mutací, když se schéma může měnit a závisí na různých polích. Mám pocit, že pokud bychom přidali nové funkce nebo upravili stávající, tak bychom mohli narazit na problémy s kompatibilitou – jak to vlastně ošetřit? Napadlo mě používat nějaké techniky jako je deprekování starých polí nebo snad i vytváření nových typů pro nové verze, ale nejsem si jistý, jak to efektivně udělat bez toho, aby to narušilo stávající aplikace a databázovou strukturu. Někdo mi říkal něco o použití rozhraní a unifikovaných typů, ale zase nevím, jestli to neudělá zbytečnou komplexitu. Jaké máte zkušenosti s verzováním v GraphQL? Funguje to nějak jinak než u REST? A co se týče našich databází – jak zajistit, aby struktura databáze byla flexibilní na změny schématu API? Děkuji za všechny tipy a rady!

195 slov
2 minut čtení
9. 3. 2023
Simona Brožová

Verzování v GraphQL je fakt oříšek, to chápu. Na rozdíl od REST, kde si prostě na URL dáš verzi, tady to tak snadno neuděláš. Místo toho se fakt často doporučuje používat deprekování starých polí. To znamená, že když nějaké pole přestaneš používat, tak ho označíš jako deprecated, aby ostatní věděli, že by ho měli přestat používat, ale necháš ho tam, dokud se všechny aplikace nepřizpůsobí.

Další možností je vytváření nových typů pro nové funkce. Ale pozor, to může přidat zbytečnou komplexitu, takže s tím opatrně. Rozhraní a unifikované typy jsou taky fajn, pokud chceš mít flexibilitu, ale zase si dej pozor na to, aby to nebylo moc zamotané.

Co se týče databáze, snaž se mít co nejvíc normalizovanou strukturu a využívej migrace pro změny schématu. Mysli na to, aby si mohl měnit schéma bez velkých zásahů do existujících dat. Takže pokud změníš API, databáze by neměla být tím dotčená. Je dobré mít testy, které ti ukážou případné problémy s kompatibilitou.

Takže shrnutí: deprekovat pole, možná nové typy a rozhraní a držet databázi flexibilní s migracemi. Držím palce!

175 slov
1.8 minut čtení
11. 11. 2024
Michaela Vobořilová

Verzování v GraphQL je fakt jiný kafe než v REST. Místo toho, abys to házel do URL jako verzi, spíš se zaměř na schéma. Můžeš používat deprekování polí, což je super způsob, jak říct uživatelům, že starý pole už nebude podporovaný. Ty nový funkce prostě přidáš a necháš starý fungovat, dokud si lidi nezvyknou na novou verzi.

Co se týče databáze, snaž se držet flexibilní struktury – třeba pomocí JSON sloupců pro extra data nebo přidáním nových tabulek místo úpravání existujících. Rozhraní a unifikovaný typy můžou pomoct, ale jak říkáš, může to přidat zbytečnou složitost. Zkus začít jednoduchýma změnama a uvidíš, co to udělá s API a databází. Jo a nezapomeň na pořádný testování! Takže klidně experimentuj, ale měj na paměti zpětnou kompatibilitu.

123 slov
1.2 minut čtení
19. 7. 2024
Daniel Malík

Verzování v GraphQL se fakt liší od REST. Většinou se doporučuje se vyhnout verzím úplně a místo toho přidávat nové funkce do stávajícího schématu, což by ti mělo udržet zpětnou kompatibilitu. Můžeš třeba používat deprekování polí, což je super způsob, jak upozornit na to, že něco už není aktuální, ale necháš to tam pro starší klienty. Co se týče databáze, tak spíš než kompletní změny schématu radši přidávej nové sloupce nebo tabulky a zachovej staré struktury. K tomu můžeš využít i migrace databáze, aby ses vyhnul problémům s existujícím daty. Jo a rozhraní a unifikované typy můžou být fajn, ale občas to jenom zbytečně zamotá věci. Hlavní je držet to flexibilní a snažit se minimalizovat změny, co by mohly rozbít něco, co už funguje.

124 slov
1.2 minut čtení
3. 9. 2021
Šárka Adámková
GraphQL.cz/Články/GraphQL a SQL databáze
Usnadnění verzování API s GraphQL a SQL databázemiČlánek se zaměřuje na techniky správy verzí GraphQL API ve spojení se změnami ve struktuře SQL databáze a přináší užitečné tipy pro vývojáře.
1000 slov
10 minut čtení
15. 2. 2020
Barbora Němcová
Přečíst článek
Podobné otázky