Representational State Transfer

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif
För det matematiska begreppet, se kvot.

Representational State Transfer (REST) är en arkitektur för att tillhandahålla tjänster för maskin till maskin-kommunikation. Begreppet härrör från en avhandling av Roy Fielding - en av författarna till HTTP-specifikationen - och har fått en snabb spridning inom systemutvecklingsområdet.

REST för tillbaka begreppet SOA till den ursprungliga idén om att system inte behöver vara integrerade med starka beroenden. SOA har på senare tid allt mer kommit att definiera Web services via SOAP vilket i många fall kan vara ett onödigt komplicerat sätt att knyta samman system och ofta skapa starka beroenden till produkter.

Till skillnad från SOAP är REST-gränssnitt enklare att implementera och använda. Tack vare enkelheten föreligger sällan behov av specifika produkter för kommunikationen. Detta medför att organisationer snabbare kan ta fram systemgränssnitt för andra att använda.

Grundprinciper

Förespråkare av REST förklarar den snabbt ökande populariteten för REST-gränssnitt med de designprinciper som använts:

  • Varje resurs är unikt adresserbar enligt en gemensam standard (URI).
  • Alla resurser har ett gemensamt gränssnitt för att överföra kommandon mellan klient och server. Detta består av:
    • Grundläggande kommandon för att interagera med objekt baserade på de verb som är angivna i HTTP-standarden: POST, GET, PUT och DELETE.
    • En uppsättning innehållstyper baserade på mime types. Varje resurs kan erhållas i ett av flera representationsformat.
  • Till skillnad från tjänster implementerade på WS-stacken exponeras data istället för metoder.

Exempel

T.ex kan ett produktregister exponeras via REST services:

URI

Verb

Action

/Product POST Skapar en ny produkt
/Product/{ProductID} GET Returnerar en produkt
/Product/{ProductID} PUT Uppdaterar en produkt
/Product/{ProductID} DELETE Tar bort en produkt
/ProductGroup/{ProductGroupID} GET Returnerar en produktgrupp

Externa länkar

Personliga verktyg