GraphQL


GraphQL je programski jezik otvorenog koda za data query i manipulaciju za API-je i za ispunjavanje upita na postojećim podacima tokom izvršavanja. GraphQL je interno razvio Facebook u 2012. godini pre nego što je javno objavljen u 2015. godini.

7. novembra 2018. godine, GraphQL Project je premešten sa Facebooka na novoosnovanu GraphQL Foundation, a hostovana je od strane neprofitne Linux fondacije. Od 2012. godine, GraphQL-ov rast je je pomno pratilo usvajanje timeline-a kao koji je postavio Li Bajron, kreator GraphQL-a. Bajronov cilj je da GraphQL učini sveprisutnim preko različitih web platformi.

GraphQL omogućava pristup razvoju web API-a, a upoređuju ga i suprotstavljaju REST-u i drugim arhitekturama web servisa. Omogućuje klijentima da definišu strukturu potrebnih podataka, a ista struktura podataka se vraća sa servera, tako sprečavajući preterano velike količine podataka da se vrate. Ali to ima implikacije na to koliko može biti efikasno web keširanje rezultata upita.

Fleksibilnost i bogatstvo jezika upita takođe dodaje složenost koja možda nije vredna korišćenja za jednostavne API-je. Uprkos imenu, GraphQL ne pruža bogatstvo grafičkih operacija koje bi se mogle naći u bazi podataka kao što je Neo4j, ili čak u dijalektima SQL-a koji podržavaju prelazno zatvaranje.

GraphQL sastoji se od tipiziranog sistema, jezika upita i semantike za izvršenje, statičkih validacija i introspekcije tipa. Podržava čitanje, pisanje (mutaciju) i pretplatu na promene u podacima (ažuriranja u realnom vremenu – najčešće implementirane upotrebom Websockets-a). GraphQL serveri su dostupni za više jezika, uključujući Haskell, JavaScript, Perl, Python, Ruby, Java, C++, C#, Scala, Go, Rust, Elixir, Erlang, PHP, R, D i Clojure. Rezultat jednog upita se dobija u JSON formatu.

Dana 9. februara 2018. godine, GraphQL Schema Definition Language (SDL) postao je deo specifikacije.