GraphQL.cz/Fórum/Jak mohu integrovat REST API do svého GraphQL schématu?

Jak mohu integrovat REST API do svého GraphQL schématu?

Zdravím všechny, mám na srdci takový dotaz ohledně integrace REST API do mého GraphQL schématu. Jsem poměrně nováček v GraphQL, ale už jsem si vytvořil základní schéma a funguje to skvěle. Teď ale potřebuju doplnit nějaké data z existujícího REST API, které už mám. Jak vlastně postupovat, abych mohl tyto dvě technologie spojit? Mám nějaké konkrétní endpointy, které bych chtěl volat, ale nevím, jak je napojit na resolvery v GraphQL. Je potřeba napsat pro každý endpoint samostatný resolver, nebo to jde udělat nějak efektivněji? A co třeba autentizace – jak se to řeší v takovém případě? Mám obavy, že pokud to neudělám správně, tak se z toho stane neudržovatelný chaos. Přemýšlel jsem i o tom, jestli by nebylo lepší použít nějakou knihovnu, která by mi s tím pomohla, ale nevím, co je nejlepší. Rád bych slyšel vaše zkušenosti a rady, protože se obávám, že bych mohl udělat nějakou chybu a pak se mi to vrátí jako bumerang. Jaké jsou nejlepší praktiky pro integraci těchto dvou technologií? Děkuji za jakoukoliv pomoc!

170 slov
1.7 minut čtení
7. 5. 2022
Antonín Hradil

Integrace REST API do GraphQL může vypadat složitě, ale v podstatě jde o to, že místo běžných dat z databáze prostě zavoláš REST endpointy. Každý endpoint, který chceš použít, by měl mít svůj resolver – to ti dá větší kontrolu a čitelnost kódu. Můžeš vytvořit helper funkce pro opakující se volání, což pomůže udržet kód čistší.

Pokud máš autentizaci v REST API, tak ji musíš řešit na úrovni resolverů. Obvykle se to dělá tak, že si v resolveru přidáš potřebné hlavičky nebo tokeny do požadavku na REST API. V klidu si můžeš udělat middleware pro ověřování uživatelů v GraphQL, abys to nemusel řešit pořád dokola.

Z knihoven bych doporučil něco jako Apollo Client, pokud používáš Node.js – usnadní ti práci s voláním API a správou dat. Ale klidně můžeš napsat vlastní volání pomocí fetch nebo axios bez jakékoliv knihovny. Hlavně si dej pozor na to, aby ses vyhnul "n+1" problému při volání víc endpointů najednou – lepší je udělat batch requests nebo nějakou caching strategii.

Když to shrnu, tak ano, každý endpoint má mít svůj resolver, autentizaci vyřeš v rámci resolverů a neboj se použít nějakou knihovnu. Hlavně to testuj a iteruj na základě toho, co se osvědčí.

195 slov
2 minut čtení
1. 2. 2024
Radek Kouba

Integrace REST API do GraphQL je v podstatě o napsání resolverů, které zavolají ty REST endpointy. Každý endpoint bude mít svůj resolver, takže ano, můžeš mít víc resolverů, což může být trochu chaotické, ale dá se to udělat přehledně. Můžeš si třeba udělat strukturu složek podle jednotlivých entit, aby ses v tom vyznal. Co se týče autentizace, většinou to funguje tak, že si v resolveru zkontroluješ token nebo něco podobného a pak ho použiješ při volání REST API. Měj na paměti, že pokud voláš víc endpointů najednou, můžeš narazit na problém s latencí. Možná by stálo za to podívat se na nějakou knihovnu, třeba Apollo Server, ten to umí krásně spojit a i s cachingem ti pomůže. Pokud chceš udržet věci v pořádku a neudělat si z toho nepořádek, doporučuju psát testy pro resolvery a dobře dokumentovat co děláš.

139 slov
1.4 minut čtení
14. 11. 2024
Marek Beran

Takže, integrace REST API do GraphQL není zas tak složitá, ale pár věcí si musíš pohlídat. Základ je, že pro každý REST endpoint si pravděpodobně budeš muset napsat vlastní resolver. Je to takový most mezi GraphQL a tvým REST API. Můžeš použít knihovny jako Axios nebo Fetch k volání těch endpointů uvnitř resolverů.

Co se týče autentizace, pokud tvůj REST API vyžaduje nějaké tokeny nebo klíče, tak je dobrý je poslat s každým requestem z resolverů. Můžeš to mít buď přímo v resolvers nebo třeba v nějakém middleware.

Jestli máš hodně endpointů, můžeš zkusit udělat nějakou logiku pro sdílení kódu v resolverech, třeba pomocí helper funkcí. Ale většinou se to dělá jednodušeji, aby to bylo přehledný.

Jako best practice bych doporučil mít jasně oddělený kód – resolvery, helpers, a pak si to hezky organizovat. A nezapomeň na error handling – co když ten REST API neodpoví? Taky důležitý. Takže jo, klidně do toho jdi a uvidíš, že to zvládneš.

157 slov
1.6 minut čtení
3. 12. 2023
Lukáš Burian
GraphQL.cz/Články/GraphQL a více zdrojů dat
Integrace REST API s GraphQL: Jak na to bez problémů?Průvodce pro vývojáře, kteří chtějí úspěšně integrovat existující REST API do nového GraphQL serveru. Naučte se krok za krokem, jak na to!
1000 slov
10 minut čtení
9. 5. 2020
Marek Dvořák
Přečíst článek
Podobné otázky