Sa najnovijom generacijom pametnih tehnologija, sve više i više uredjaja ima potrebu za podacima neophodnim za njihovu osnovnu funkcionalnost. Pametni satovi, frižideri, garažna vrata su samo neki od njih.
Razvoj i održavanje API backend aplikacije za usluživanje nekoliko generacija uređaja i njihovih specifičnih potreba postalo je veoma teško i skupo.
GraphQL pruža alternativu i promenu u paradigmi izmeštanjem odgovornosti za strukturu podataka u API pozivima ka samom klijentu. Ovo obezbedjuje optimizaciju u prenosu podataka isključujući nepotrebne podatke i u isto vreme, smanjuje kompleksnost API poziva i metoda što ujedno ubrzava i olakšava održavanje istih.
2. designbyheart@gmail.com
O meni
Predrag Jevtic
Full stack developer
- web design / development
(JS, CSS, PHP, MySQL od 2007.)
- mobile development
(ObjC, Swift, React Native od 2010.)
- agile practitioner
(Scrum Master, Agile Coach od 2014.)
3. designbyheart@gmail.com
Nedostaci REST API servisa
• Server mora da usluži i web app i brojne
klijente sa različitim potrebama za podatke
(mobile (iOS, Android), desktop (Linux,
MacOS, Windows), TV apps, Internet of Thing
apps…)
• Primer:
api.com/v1/users
api.com/v1/users/edit/2
api.com/v1/users/new
4. designbyheart@gmail.com
Nedostaci REST API servisa
• Problem konzistentnosti - isti atributi
imaju različite tipove podataka
{
"project": {
"tagline": "A query language for APIs”,
"description": null
}
}
{
"project": {
"tagline": "A query language for APIs”,
"description": ""
}
}
5. designbyheart@gmail.com
Nedostaci REST API servisa
• Server driven selection?
• Overfetching - previše informacija koje stižu
u jednom pozivu (REST poziv za listu
odredjenih elemenata dobija često ceo objekat
sa podacima koji nisu potrebni)
• Underfetching - premalo informacija u jednom
REST pozivu što rezultuje slanjem nekoliko
API poziva (često jednog za drugim -
synchronous). Rezultat: sporije prikazivanje
podataka u UI
6. designbyheart@gmail.com
Šta je GraphQL?
• https://graphql.org
• A query language for your API, by Facebook (ReactJS
conference 2015.)
• Pruža kompletan i razumljiv opis podataka u API-ju
• Daje klijentima moć da traže tačno one podatke koji su im
potrebni ubrzavajući komunikaciju isključivanjem
nepotrebnih setova podataka
• Ubrzava razvoj API-ja tokom vremena, smanjuje
kompleksnost istog (smanjuje potrebu za velikim brojem
različitih API poziva sa relativno sličnim setom
podataka)
7. designbyheart@gmail.com
Šta je GraphQL?
• https://graphql.org
• A query language for your API, by Facebook (ReactJS
conference 2015.)
• Pruža kompletan i razumljiv opis podataka u API-ju
• Daje klijentima moć da traže tačno one podatke koji su im
potrebni ubrzavajući komunikaciju isključivanjem
nepotrebnih setova podataka
• Ubrzava razvoj API-ja tokom vremena, smanjuje
kompleksnost istog (smanjuje potrebu za velikim brojem
različitih API poziva sa relativno sličnim setom
podataka)
8. designbyheart@gmail.com
GraphQL Prednosti
• Definija (schema) sa striktnim tipovima attributa
• Nema over ili underfetching-a (klijent dobija precizan
set podataka koji mu je potreban)
• Omogućava rapidni razvoj aplikacija i povećava
produktivnost FE i mobile timova (front end GraphQL
klijenti omogućavaju keširanje, realtime i optimistic UI
update, GraphQL Faker)
• Kompozicija više GraphQL schema (schema stiching)
• Velika open source zajednica i podrška