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!