RESTful- ja GraphQL-verkko-ohjelmointirajapintojen vertailu
Mäkipernaa, Joona (2021)
Mäkipernaa, Joona
2021
Tieto- ja sähkötekniikan kandidaattiohjelma - Bachelor's Programme in Computing and Electrical Engineering
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2021-01-25
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202012239158
https://urn.fi/URN:NBN:fi:tuni-202012239158
Tiivistelmä
Verkko-ohjelmointirajapintojen (web API) merkitys modernien selain- ja mobiilisovelluksien kehityksessä on kasvanut. Myös muut tietokoneohjelmat hyödyntävät verkko-ohjelmointirajapintoja enemmän ja monipuolisemmin kuin ennen. Tämä on johtanut verkko-ohjelmointirajapintojen tarjoamien palvelujen ja rajapintoihin tehtyjen kyselyjen määrän kasvamiseen sekä rajapintojen monimutkaisuuden lisääntymiseen. Tämän takia tehokkaan, helposti ylläpidettävän ja helppokäyttöisen verkko-ohjelmointirajapinnan tarjoaminen ja toteuttaminen on tärkeämpää kuin ennen.
Tässä kandidaatintutkielmassa tutustutaan kahteen moderniin verkko-ohjelmointirajapintaparadigmaan ja vertaillaan niiden etuja ja heikkouksia keskenään. RESTful- ja GraphQL-rajapinnat ovat keskenään vaihtoehtoisia tapoja verkko-ohjelmointirajapinnan toteuttamiseen. Tutkielmassa käsiteltävät RESTful-rajapinnat perustuvat REST-ohjelmistoarkkitehtuuriseen tyyliin sekä HTTP-protokollaan. GraphQL on avoimen standardin datan kysely- ja muokkauskieli ohjelmointirajapintojen toteuttamiseen sekä palvelinpuolen ajonaikainen järjestelmä kyselyjen käsittelemiseen.
RESTful-rajapinta on pitkään ollut vallitseva tapa toteuttaa verkko-ohjelmointirajapinta. GraphQL:n suosio on ollut kasvussa ja se lupaa tarjota ratkaisun eräisiin RESTful-verkko-ohjelmointirajapintoja vaivaaviin ongelmiin, kuten datan yli- ja alihakemiseen. Tutkielmassa tutustutaan molempiin rajapintaparadigmoihin ja vertaillaan niiden etuja ja heikkouksia keskenään. Tutkielma on toteutettu kirjallisuuskatsauksena.
Tutkielma koostuu kahdesta osasta. Ensimmäisessä osassa esitellään vertailtavien rajapintateknologioiden ominaisuudet ja perusteet. Toisessa osassa vertaillaan GraphQL- ja RESTful-rajapintoja keskenään. Vertailussa huomioidaan asiakkaan ja palvelimen välillä liikkuvien kyselyjen ja datan määrä sekä rajapintojen ylläpidettävyys, yhdenmukaisuus, turvallisuus ja käytettävyys. Vertailuosiossa todetaan, että GraphQL-rajapinta on todennäköisesti RESTful-rajapintaa parempi ratkaisu rajapinnan toteuttamiseen, jos palvelu on monimutkainen tai nopeasti kehittyvä. Muussa tapauksessa GraphQL ei juurikaan tarjoa hyötyjä RESTful-rajapintaan verrattuna, jolloin RESTful-rajapinta on todennäköisesti yksinkertaisuutensa ja yleisyytensä takia parempi valinta verkko-ohjelmointirajapinnan toteutustavaksi.
Tässä kandidaatintutkielmassa tutustutaan kahteen moderniin verkko-ohjelmointirajapintaparadigmaan ja vertaillaan niiden etuja ja heikkouksia keskenään. RESTful- ja GraphQL-rajapinnat ovat keskenään vaihtoehtoisia tapoja verkko-ohjelmointirajapinnan toteuttamiseen. Tutkielmassa käsiteltävät RESTful-rajapinnat perustuvat REST-ohjelmistoarkkitehtuuriseen tyyliin sekä HTTP-protokollaan. GraphQL on avoimen standardin datan kysely- ja muokkauskieli ohjelmointirajapintojen toteuttamiseen sekä palvelinpuolen ajonaikainen järjestelmä kyselyjen käsittelemiseen.
RESTful-rajapinta on pitkään ollut vallitseva tapa toteuttaa verkko-ohjelmointirajapinta. GraphQL:n suosio on ollut kasvussa ja se lupaa tarjota ratkaisun eräisiin RESTful-verkko-ohjelmointirajapintoja vaivaaviin ongelmiin, kuten datan yli- ja alihakemiseen. Tutkielmassa tutustutaan molempiin rajapintaparadigmoihin ja vertaillaan niiden etuja ja heikkouksia keskenään. Tutkielma on toteutettu kirjallisuuskatsauksena.
Tutkielma koostuu kahdesta osasta. Ensimmäisessä osassa esitellään vertailtavien rajapintateknologioiden ominaisuudet ja perusteet. Toisessa osassa vertaillaan GraphQL- ja RESTful-rajapintoja keskenään. Vertailussa huomioidaan asiakkaan ja palvelimen välillä liikkuvien kyselyjen ja datan määrä sekä rajapintojen ylläpidettävyys, yhdenmukaisuus, turvallisuus ja käytettävyys. Vertailuosiossa todetaan, että GraphQL-rajapinta on todennäköisesti RESTful-rajapintaa parempi ratkaisu rajapinnan toteuttamiseen, jos palvelu on monimutkainen tai nopeasti kehittyvä. Muussa tapauksessa GraphQL ei juurikaan tarjoa hyötyjä RESTful-rajapintaan verrattuna, jolloin RESTful-rajapinta on todennäköisesti yksinkertaisuutensa ja yleisyytensä takia parempi valinta verkko-ohjelmointirajapinnan toteutustavaksi.
Kokoelmat
- Kandidaatintutkielmat [7051]