GraphQL
GraphQL je jezik upita za API-je koji je nastao kao alternativa tradicionalnim REST API-jima. Umjesto da koristi niz različitih endpointova, GraphQL koristi samo jedan endpoint i omogućuje klijentima da specificiraju točno što žele dobiti od tog API-ja.
GraphQL je stvoren u tvrtki Facebook 2012. godine, a kasnije je postao open-source projekt 2015. godine. Danas ga koriste mnoge tvrtke poput GitHuba, Shopifya i Netflix-a.
Glavna prednost GraphQL-a je to što omogućuje klijentima da specificiraju samo ono što im je potrebno, što dovodi do smanjenja količine podataka koju klijent mora preuzeti s servera. Također omogućuje klijentima da specificiraju složene upite koje bi u REST API-ju bile teško ili nemoguće izvršiti.
GraphQL koristi tipove podataka kako bi opisao podatke koje API može vratiti, što ga čini vrlo jasnim i lako razumljivim za razvojne programere i klijente. Također podržava promjene podataka, što znači da klijenti mogu stvarati, mijenjati i brisati podatke na serveru pomoću GraphQL-a.
Kao što je već spomenuto, GraphQL ima samo jedan endpoint, što olakšava skaliranje API-ja i smanjuje kompleksnost. Također pruža mogućnost za izradu grafova podataka koji mogu biti vrlo korisni u analizi podataka.
Primjer GraphQL upita
Evo jednostavnog primjera GraphQL upita i odgovora:
Recimo da imate API koji vraća informacije o filmovima. U tradicionalnom REST API-ju, mogli biste imati endpoint za dohvaćanje svih filmova, a zatim drugi endpointi za dohvaćanje pojedinačnih filmova, ocjena, glumaca, itd.
S druge strane, u GraphQL-u, klijenti mogu specificirati samo ono što im je potrebno, koristeći jedan endpoint.
Na primjer, evo jednostavnog GraphQL upita koji traži nazive i žanrove svih filmova:
query {
movies {
title
genre
}
}
U odgovoru na ovaj upit, API bi vratio samo nazive i žanrove svih filmova:
{
"data":
{ "movies":
[
{
"title": "Forrest Gump",
"genre": "drama"
},
{
"title": "Star Wars",
"genre": "sci-fi"
},
{
"title": "The Godfather",
"genre": "drama"
}
]
}
}
Kao što vidite, API je vratio samo tražene informacije (naziv i žanr) za svaki film, umjesto da vrati sve informacije o filmu. Ovo je jedna od velikih prednosti GraphQL-a - klijenti mogu specificirati samo ono što im je potrebno, a ne moraju preuzeti nepotrebne podatke.
Ovo je samo jedan jednostavan primjer, ali GraphQL omogućuje i složenije upite i omogućuje klijentima da specificiraju svoje zahtjeve za podacima na vrlo precizan način.