GraphQL.cz/Fórum/Jak se dělá verzování ve GraphQL?

Jak se dělá verzování ve GraphQL?

Zajímá mě, jak přesně funguje verzování v GraphQL, protože jsem slyšel, že to může být trochu jiný přístup než v tradičních REST API. Zatímco u REST se často používají URL verze jako /api/v1/... nebo /api/v2/... a tak podobně, tak jsem si všiml, že v GraphQL to není úplně obvyklé. Vlastně nevím, jestli se vůbec nějaké verze dělají, nebo jestli se to řeší jinak. Musím si třeba vytvářet nové schéma na každou novou verzi? Jak se řeší, když chci přidat nové pole nebo změnit strukturu dat? Je potřeba něco speciálního nastavovat? Mám obavy, že když udělám nějakou změnu, tak to může rozbít stávající aplikace používající API. Také bych rád věděl, jestli existují nějaké best practices nebo doporučení ohledně verzování v GraphQL, abych se vyhnul nějakým problémům v budoucnu. Může mi někdo prosím objasnit, jak to ve skutečnosti funguje a co všechno je potřeba mít na paměti? Děkuji!

146 slov
1.5 minut čtení
1. 8. 2024
Michaela Zichová

Takže k tomu verzování v GraphQL. Ono to funguje trochu jinak než u REST, kde jsou verze často vidět v URL. V GraphQL většinou se snažíš udělat schéma tak, aby bylo co nejvíc zpětně kompatibilní. To znamená, že když přidáš nový field nebo typ, nemělo by to rozbít stávající dotazy. Je dobré dodržovat principy jako "nepřepisovat" a "neodstraňovat" existující pole, takže když něco přidáš, je to v pohodě. Když bys chtěl změnit strukturu dat, můžeš třeba vytvořit nový typ a ten starý nechat jak je, dokud na něj lidi stále spoléhají. Někteří lidé používají i namespace pro pole nebo typy, aby si oddělili různé verze. Takže spíš jde o to mít dobře navržené schéma a myslet na to, jak to ovlivňuje ostatní uživatele API. Best practices? No, testovat změny a pořádně dokumentovat co se mění. Když to uděláš dobře, tak se nemusíš bát, že by ti to rozbilo aplikace.

149 slov
1.5 minut čtení
30. 9. 2024
Helena Macková

Verzování v GraphQL je fakt jiný, než v REST. Většinou se to řeší spíš tím, že se snažíš udržet zpětnou kompatibilitu, než abys dělal verze jako /v1 nebo /v2. Když chceš přidat nový field nebo udělat změny, tak je důležitý mít na paměti, že bys měl přidávat nové fields místo toho, abys ty starý měnil nebo mazal. Klienty to nijak neovlivní, pokud starý fields zůstanou. Takže můžeš klidně rozšířit schéma a neřešit verzování.

Pokud bys ale potřeboval úplně jinou strukturu dat a chtěl bys to udělat radikálně jinak, pak už bys mohl zvážit vytvoření nového schématu. Ale to je spíš extrémní případ. Další věc je dokumentace – měj ji aktuální a jasnou, aby si vývojáři věděli rady i s novinkama. Taky se mluví o "depreaci" fields, když víš, že něco bude brzy neaktuální – to dává lidem čas na přechod. Zkrátka se snaž držet stávající strukturu co nejvíc a přidávat nové věci tak, aby starý funkce zůstaly. To by mělo pomoct vyhnout se problémům.

164 slov
1.6 minut čtení
24. 11. 2024
Dana Pazderová

Verzování v GraphQL je fakt jiný než v REST. Většinou se nesnažíš dělat nové verze jako s URL. Místo toho se snažíš udržet zpětnou kompatibilitu. Když potřebuješ přidat nový field nebo změnit strukturu, tak to děláš způsobem, který neovlivní stávající query. Třeba můžeš přidat nová pole jako volitelná a staré necháš jak jsou. Takže když někdo volá starší verzi, nic se mu nezmění.

Můžeš mít víc typů, ale většinou to není potřeba. Důležitý je dodržovat principy zpětné kompatibility – jestliže něco vyhodíš nebo změníš, mělo by to být hodně promyšlený.

Best practices jsou třeba udržovat dokumentaci aktuální, testovat změny a myslet na to, že klienti můžou používat různé verze najednou. V podstatě se snaž udržet API stabilní a neudělat zbytečně moc velký změny najednou. Takže v podstatě se neboj experimentovat, ale pamatuj na uživatele tvého API.

134 slov
1.3 minut čtení
28. 12. 2023
Bohumil Kořínek
GraphQL.cz/Články/Schema design
Implementace verzování v GraphQL schématu: Jak na to bezbolestněČlánek se zabývá efektivními strategiemi pro verzování GraphQL schémat, aby se předešlo problémům s kompatibilitou mezi verzemi. Přináší praktické rad...
1000 slov
10 minut čtení
11. 2. 2023
Richard Malý
Přečíst článek
Podobné otázky