GraphQL vaihtoehtoisena rajapintatekniikkana ohjelmistokehityksessä
Laaksonen, Pasi (2022)
Laaksonen, Pasi
2022
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-202205128864
https://urn.fi/URN:NBN:fi:amk-202205128864
Tiivistelmä
Ohjelmointirajapintojen merkitys web-sovelluskehityksessä on suuri, sillä nykyajan sovelluksissa datamäärät voivat olla suuria ja yksityiskohtaisia. Suosittu REST-paradigma voi aiheuttaa tällaisissa sovelluksissa niin kutsuttuja yli- ja alihakuongelmia. Tässä opinnäytetyössä tarkastellaan vaihtoehtoista GraphQL-paradigmaa. Opinnäytetyön päätarkoituksena on osoittaa, että GraphQL-lähestymistapa ei aiheuta yli- ja alihakuongelmia.
Opinnäytetyön käytännön osuus on toteutettu valikoidulla avoimen lähdekoodin REST-pohjaisella sovelluksella. Sovelluksen palvelinpuolen ohjelmakoodi on refaktoroitu GraphQL-versioksi. Opinnäytetyön tulokset on saavutettu vertailemalla näitä versioita erilaisten esimerkkihakujen kautta. Nämä haut aiheuttavat sovelluksen REST-versiossa potentiaalisia yli- ja alihaun ongelmia. Tuloksissa on esitetty myös GraphQL-paradigman ongelmakohtia ja miten ne on huomioitu käytännön osuuden sovelluksen ohjelmakooditasolla.
Tulosten perusteella GraphQL voi soveltua hyvin sovelluksiin, joissa yksityiskohtaisia kyselyjä on paljon. GraphQL-paradigman mukaan toteutettujen kustomoitujen kyselyiden vastaukset sisältävät vain tarpeellisen määrän dataa, joten ylihakuja ei synny. Myöskään useille päätepisteille ei ole tarvetta, joten tämä ratkaisu korjaa myös alihaun ongelmia. GraphQL kuitenkin monimutkaistaa virhetilanteiden monitoroimista ja välimuistitallennusta, joten se ei kokonaan korvaa REST-paradigmaa web-sovelluskehityksessä.
Opinnäytetyön käytännön osuus on toteutettu valikoidulla avoimen lähdekoodin REST-pohjaisella sovelluksella. Sovelluksen palvelinpuolen ohjelmakoodi on refaktoroitu GraphQL-versioksi. Opinnäytetyön tulokset on saavutettu vertailemalla näitä versioita erilaisten esimerkkihakujen kautta. Nämä haut aiheuttavat sovelluksen REST-versiossa potentiaalisia yli- ja alihaun ongelmia. Tuloksissa on esitetty myös GraphQL-paradigman ongelmakohtia ja miten ne on huomioitu käytännön osuuden sovelluksen ohjelmakooditasolla.
Tulosten perusteella GraphQL voi soveltua hyvin sovelluksiin, joissa yksityiskohtaisia kyselyjä on paljon. GraphQL-paradigman mukaan toteutettujen kustomoitujen kyselyiden vastaukset sisältävät vain tarpeellisen määrän dataa, joten ylihakuja ei synny. Myöskään useille päätepisteille ei ole tarvetta, joten tämä ratkaisu korjaa myös alihaun ongelmia. GraphQL kuitenkin monimutkaistaa virhetilanteiden monitoroimista ja välimuistitallennusta, joten se ei kokonaan korvaa REST-paradigmaa web-sovelluskehityksessä.