REST

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