REST – mitä se on? Määritelmä, RESTful-arkkitehtuuri ja esimerkit

Mikä on REST? Selkeä määritelmä, RESTful-arkkitehtuuri, käytännön esimerkit ja miten REST tehostaa tiedon jakamista verkkopalveluissa.

Tekijä: Leandro Alegsa

Representational state transfer (REST) on ohjelmointiarkkitehtuurin malli, jonka tarkoituksena on yksinkertaistaa ja tehostaa tietojenkäsittelyjärjestelmien välistä viestintää. REST kuvastaa ajatusta, että suurten tietomäärien jakaminen on usein tehokkaampaa antamalla osapuolille viittauksia ja rajapintoja tietoihin eikä lähettämällä täydellisiä kopioita jokaisesta resurssista. Järjestelmiä, jotka noudattavat tätä arkkitehtuuria, kutsutaan usein "RESTful"-järjestelmiksi. REST ei ole protokolla vaan joukko arkkitehtonisia periaatteita, jotka voidaan toteuttaa esimerkiksi HTTP:n avulla.

Perusperiaatteet ja RESTin rajoitteet

REST-arkkitehtuuri perustuu useisiin keskeisiin periaatteisiin (REST-constraints), jotka yhdessä tekevät järjestelmästä skaalautuvan, yksinkertaisen ja helposti ylläpidettävän:

  • Asiakas–palvelin-erottelu — käyttöliittymä ja datankäsittely erotetaan toisistaan; tämä mahdollistaa itsenäisen kehityksen ja skaalaamisen.
  • Tilattomuus (stateless) — jokainen pyyntö palvelimelle sisältää kaiken tarvittavan tiedon sen käsittelemiseksi; palvelin ei säilytä asiakkaan sessiokohtaista tilaa.
  • Välimuistitus (cacheability) — vasteet voidaan merkitä välimuistattaviksi tai ei-välimuistattaviksi, mikä parantaa suorituskykyä ja vähentää tarpeettomia pyyntöjä.
  • Yhtenäinen käyttöliittymä — resurssit identifioidaan URI:lla ja niitä käsitellään standardoiduilla operaatioilla (esim. HTTP-menetelmät), mikä yksinkertaistaa rajapintaa.
  • Kerrokset (layered system) — arkkitehtuuri voi koostua useista tasoista (välimuistit, välipalvelimet), mutta asiakkaalle ne näyttävät yhdenmukaiselta rajapinnalta.
  • HATEOAS (Hypermedia as the Engine of Application State) — ideaalitapauksessa vastauksissa on hypermedia-linkkejä, joiden avulla asiakas voi löytää seuraavat käytettävissä olevat toiminnot ilman ennaltatietoa rajapinnan rakenteesta.

HTTP ja tavalliset REST-käytännöt

REST-rajapintoja toteutetaan yleisimmin HTTP-protokollan avulla. Yleisiä käytäntöjä ovat:

  • Resurssien mallintaminen — resurssit kuvataan substantiiveina (esim. /asiakkaat/123, /tuotteet/456).
  • HTTP-menetelmät — GET (lue), POST (luo), PUT (korvaa), PATCH (muokkaa osittain), DELETE (poista). Menetelmien tarkoitus on olla semanttisesti oikeassa suhteessa toimintoihin.
  • Statuskoodit — palautetaan sopivat HTTP-statuskoodit (esim. 200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorized, 404 Not Found, 500 Internal Server Error).
  • Sisältötyypit — vastaukset yleensä JSON- tai XML-muodossa (nykyään JSON yleisin), ja Content-Type-otsikon käyttäminen on suositeltavaa.
  • Idempotenssi — tietyt metodit (GET, PUT, DELETE) tulisi olla idempotentteja eli toistuvat samat pyynnöt eivät muuta lopputilaa useammin kuin kerran.

Esimerkit ja analogiat

Helpottaakseen RESTin käsitettä käytetään usein vertauksia. Esimerkki ei-RESTful-järjestelmästä tässä tekstissä on perinteinen kotielokuvakokoelma: saadakseen käyttöönsä elokuvan, kirjaston omistajan on hankittava siitä fyysinen kopio. Tämä johtaa tuhlaukseen, koska kopioita on enemmän kuin niitä käytetään milloinkin, ja uusien elokuvien lisääminen voi olla hidasta. Vastaava REST-pohjainen ratkaisu on suoratoistopalvelu: elokuvaan viitataan sen nimellä ja sisältö striimataan pyynnöstä ilman tarvetta tallentaa paikallista täyttä kopiota.

World Wide Web on käytännössä suurin ja arkkitehtonisesti merkittävin RESTful-järjestelmä: digitaalisiin resursseihin viitataan URL-osoitteilla eikä jokaista resurssia lähetetä kopiona jokaiselle käyttäjälle. Fyysiset kirjastot ovat tässä vertauksessa ei-RESTful-vastaava: niissä tarvitaan paikallisia kopioita. Webissä jokaiselle resurssille annetaan yksilöllinen osoite, ja sisältö haetaan Internetin kautta sen sijaan että haettaisiin paikallinen kopio esimerkiksi optiselta levyltä tai kiintolevyltä.

REST-arkkitehtuuria voidaan soveltaa myös yritysten väliseen tiedonjakoon: kahden yrityksen, jotka haluavat jakaa suuria määriä jatkuvasti muuttuvaa dataa, ei tarvitse lähettää toistuvia täydellisiä tietokantojensa kopioita. Sen sijaan ne voivat jakaa pääsyn tiettyihin resurssiin tai antaa resursseille URI-tunnisteet, jolloin kyselyt (esim. hinnat, varastosaldot) tehdään suoraan resurssin osoitteeseen ja haetaan ajantasaista tietoa.

Kun REST ei riitä — vaihtoehdot ja rajoitukset

REST on toimiva useimmissa käyttötapauksissa, mutta kaikissa tilanteissa se ei ole optimaalinen. Esimerkiksi reaaliaikaiset kaksisuuntaiset yhteydet voivat hyötyä WebSocketeista. Myös kompleksiset kyselyt, joissa halutaan hakea monimutkaista liittyvää dataa yhdellä pyynnöllä, saattavat soveltua paremmin esimerkiksi GraphQL:lle. SOAP puolestaan tarjoaa standardoidumman tavan kuvata toimintoja (esim. WSDL) ja rikkaampia yritystason ominaisuuksia (viestinvälitys, turva-standardit), mutta on usein raskaampi ja vähemmän joustava kuin REST.

Käytännön vinkkejä REST-API:en suunnitteluun

  • Suunnittele resurssit loogisesti — käytä selkeitä, substantiiveihin perustuvia URI-rakenteita.
  • Hyödynnä HTTP-ominaisuuksia — vastaa sopivilla statuskoodeilla, käytä ETag/If-None-Match -otsikoita välimuistitusoptimoimiseksi.
  • Turvallisuus — varmista autentikointi ja valtuutus (esim. OAuth 2.0, JWT), käytä HTTPS:ää salaamiseen.
  • Versionhallinta — versioi API (esim. URL- tai header-pohjaisesti) rikkoontumisen välttämiseksi, kun teet taaksepäin yhteensopimattomia muutoksia.
  • Dokumentointi — tarjoa selkeä dokumentaatio (esim. OpenAPI/Swagger) ja esimerkkipyynnöt, jotta asiakkaiden on helppo käyttää rajapintaa.
  • Virheiden käsittely — palauta yhdenmukaisia virheresponsseja, joissa on selkeät viestit ja mahdolliset virhekoodit.

Yhteenveto

REST on kevyt, selkeä ja laajasti käytetty arkkitehtuurinen malli resurssipohjaisille rajapinnoille. Sen periaatteet — kuten tilattomuus, välimuistitus ja yhtenäinen käyttöliittymä — tekevät sovelluksista skaalautuvia ja helppoja integroida. Käytännössä REST-rajapinnat toteutetaan usein HTTP:n päällä hyödyntäen standardoituja menetelmiä ja statuskoodeja. Monissa tilanteissa REST on erinomainen valinta, mutta aina kannattaa arvioida myös vaihtoehtoja kuten GraphQL:ää tai WebSocketteja tarpeiden mukaan.

Kysymyksiä ja vastauksia

K: Mikä on Representational State Transfer (REST)?


V: Representational State Transfer (REST) on ohjelmistoarkkitehtuurityyli, joka suunniteltiin ohjaamaan World Wide Webin kehitystä.

K: Miksi kutsutaan järjestelmiä, jotka toteuttavat RESTin?


V: RESTin toteuttavia järjestelmiä kutsutaan "RESTful"-järjestelmiksi.

K: Miten tietokonejärjestelmät kommunikoivat keskenään REST:n avulla?


V: Tietokonejärjestelmät kommunikoivat keskenään HTTP-pyyntöjen avulla, kun käytetään REST:iä.

K: Mitä REST dokumentoi?


V: REST dokumentoi tavan, jolla tietokonejärjestelmät voivat kommunikoida keskenään HTTP-pyyntöjen avulla.

K: Kuka loi ohjelmistojen arkkitehtuurityylin Representational State Transfer (REST)?


V: Representational State Transfer (REST) -ohjelmistoarkkitehtuurityyli luotiin ohjaamaan World Wide Webin kehitystä.

K: Minkälaista viestintää REST käyttää?


V: REST käyttää HTTP-pyyntöjä tietokonejärjestelmien väliseen viestintään.

K: Mikä on Representational State Transferin (REST) tarkoitus?


V: Representational State Transferin (REST) tarkoituksena on ohjata World Wide Webin kehitystä ja tarjota tietokonejärjestelmille tapa kommunikoida keskenään HTTP-pyyntöjen avulla.


Etsiä
AlegsaOnline.com - 2020 / 2025 - License CC3