GraphQL.cz/Fórum/Jak správně verzovat schéma v GraphQL?

Jak správně verzovat schéma v GraphQL?

Chtěl bych se zeptat na to, jak se vlastně nejlépe verzuje schéma v GraphQL. Zajímá mě, jestli existují nějaké osvědčené postupy, nebo jestli je to spíš na každém jednotlivém projektu, jak si to udělá. Když pracuji na API, tak se občas stane, že potřebuju přidat nové pole nebo změnit typ existujícího. Jak mám ale zajistit, aby to neovlivnilo ty uživatele, co už používají starší verzi? Mám uvažovat o nějakých verzích schématu jako v REST, nebo je lepší držet všechno v jedné verzi a používat deprekování? Samozřejmě bych rád dodržoval principy zpětné kompatibility, ale nevím přesně jak na to. Také by mě zajímalo, jestli je dobré mít nějakou dokumentaci pro různé verze nebo spíše nějaký grafický nástroj, který by ukazoval změny ve schématu. Rád bych slyšel vaše zkušenosti s verzováním schémat v GraphQL a jaké strategie se osvědčily vám. Díky!

139 slov
1.4 minut čtení
31. 1. 2024
Bohuslav Kotek

Roky se to řeší různě, ale většina lidí se shodne na tom, že verzování v GraphQL je spíš o udržení zpětné kompatibility než o vytváření nových verzí jako v REST. Místo toho prostě deprekuješ starý pole a přidáváš nový. Když něco měníš, měl bys mít jasně označený, co je deprecated a co bude zrušeno. Takže klidně přidej nový typ nebo pole, ale starý nech být a informuj uživatele, že ho plánuješ vyřadit. To jim dá čas se přizpůsobit.

Dobrý je mít i nějakou dokumentaci, kde jasně popíšeš změny a jak se s nimi vypořádat. Grafické nástroje jako Apollo nebo GraphiQL ti můžou pomoct zobrazit schéma a změny. Většina vývojářů ocení, když budou mít přehled o tom, co se mění a jaký vliv to má na jejich aplikace. Neboj se experimentovat s různými přístupy a zjistit, co funguje nejlíp pro tvůj tým.

141 slov
1.4 minut čtení
4. 1. 2025
Martina Malá

Verzování schématu v GraphQL je fakt zajímavé téma. Místo klasického verzování jako v REST doporučuji spíš pracovat s deprekováním. Pokud přidáš nový field, tak ho klidně přidej, ale pokud měníš typ nebo jméno existujícího pole, to už chceš pořádně promyslet. Udržuj zpětnou kompatibilitu, aby tví uživatelé nemuseli hned měnit svůj kód. Dobrý nápad je mít v dokumentaci jasně označené deprekované polia, aby si vývojáři věděli, co mají čekat. Použití nástrojů jako Apollo Studio může pomoct vizualizovat změny ve schématu a sledovat deprekování, což se hodí, když máš víc verzí na skladě. Takže shrnuto, drž se deprekování a jasné dokumentace a všechno bude ok.

103 slov
1 minut čtení
26. 10. 2024
Štěpán Rada

Pokud jde o verzování schématu v GraphQL, tak je to trochu jiný přístup než u REST. Většina lidí se shoduje na tom, že by ses měl snažit držet všechno v jedné verzi a používat deprekování. Když chceš přidat nové pole, tak ho prostě přidej, ale staré pole označ jako deprecated a dej lidem vědět, že brzy zmizí. To dává smysl, protože uživatelé můžou postupně přejít na nové věci.

Myslím, že dobrý nápad je mít dokumentaci, kde ukážeš, co bylo změněno a jak se to používá. Některé nástroje jako Apollo nebo GraphQL Playground ti pomůžou s vizualizací schématu a mohou ukázat deprecated prvky.

Takže shrnuto, snaž se o zpětnou kompatibilitu, využívej deprekování a měj dobrou dokumentaci, abys uživatelům usnadnil přechod. Zbytečně si nekomplikuješ život s verzemi jako v RESTu.

128 slov
1.3 minut čtení
30. 11. 2024
Oldřich Král
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