REST () on Roy Fieldingin vuonna 2000 väitöskirjassaan nimeltä Architectural Styles and the Design of Network-based Software esittelemä arkkitehtuurityyli ohjelmointirajapintojen toteuttamiseen. RESTful-arkkitehtuuri ei ota kantaa käytettävään protokollaan. Yleensä RESTful-arkkitehtuuriin perustuvia ohjelmointirajapintoja toteutetaan joko HTTP tai HTTPS-protokollien avulla.
REST-ohjelmointirajapintojen avulla voidaan lähettää HTTP- tai HTTPS-pyyntöjä palvelimille, jotka palauttavat esimerkiksi JSON- tai XML-muotoisia vastauksia. Tällä tavoin dataa voidaan siirtää helposti palvelimelta toiselle.
RESTful-arkkitehtuurityyli
Taulukko 1. RESTful-arkkitehtuurityylin rajoitteista ja pakollista perusperiaatteista. +Englannin kielelläSuomen kielelläKuvaus1.Client-serverAsiakas-palvelin -malli Arkkitehtuurissa on kaksi selkeää roolia: asiakas ja palvelin.Näiden tehtävät on eroteltu selkeästi.2.StatelessTilattomuusPalvelin ei tallenna mitään tilatietoja, vaan kaikki niihin liittyvä tieto on aina mukana jokaisessa asiakkaan tekemässä kyselyssä.3.CacheVälimuistin hyödyntäminenKyselyihin merkitään, voiko kyselyn tallentaa asiakkaan tai palvelimen välimuistiin. Välimuistin hyödyntäminen lisää suorituskykyä.4.Uniform interfaceYhdenmukainen ohjelmointirajapinta4a. Jokaisella resurssilla on oma URL-osoite 4b. Resursseja käsitellään niiden ilmentymien kautta (esimerkiksi JSON ja XML)
4c. Kysely sisältää kaiken tarvittavan tiedon sen käsittelemiseen.
4d. Vastaus sisältää hyperlinkkejä muihin resurssiin liittyviin tietoihin tai palveluihin (Hypermedia as the Engine of Application State, HATEOS)5.Layered systemKerrostettu järjestelmäJärjestelmä voi rakentua kerroksittain ja välityspalvelimia voi käyttää. Tärkeää on ymmärtää, että RESTful-periaatteita sovelletaan. Käytännössä juuri mikään ohjelmointirajapinta ei täytä vaatimusta 4d (HATEOS). Silloin ohjelmointirajapintaa kutsutaan RESTin kaltaiseksi ohjelmointirajapinnaksi.
Tavoitteet REST-arkkitehtuurin on tarkoitus parantaa rajapintojen suorituskykyä skaalautuvuutta yksinkertaisuutta muunneltavuutta siirrettävyyttä luotettavuutta.
Lähteet
Aiheesta muualla
Luokka:Ohjelmistoarkkitehtuuri Luokka:Seulonnan keskeiset artikkelit