Representational State Transfer

Från Wikipedia
Hoppa till: navigering, sök

Representational State Transfer (REST) är ett IT-arkitekturbegrepp som beskriver hur tjänster för maskin till maskin-kommunikation kan tillhandahållas. 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.

Jämfört med 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[redigera | redigera wikitext]

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[redigera | redigera wikitext]

T.ex kan ett produktregister exponeras via REST services:

URI

Verb

Action

/Product GET Hämtar en lista med alla produkter
/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[redigera | redigera wikitext]