REST's principper (constraints)

REST er en arkitektonisk stil. En arkitektonisk stil defineres som:

Et samlet sæt arkitektoniske principper der regulerer anvendelsen af arkitektoniske elementer og deres relation.

REST's arkitektoniske stil baserer sig i praksis på følgende principper:

1. Giv alle ting (ressourcer) en URL

Navngiv alt hvad du er interesseret i.

Eksempler:

Københavns kommune: http://oiorest.dk/danmark/kommuner/101
Sorgenfri slot: http://oiorest.dk/danmark/kommuner/173/lokaliteter/Sorgenfri Slot
Dronningens adresse: http://oiorest.dk/danmark/adresser/Amalienborg Slotsplads,2,1257
Region Hovedstaden: http://oiorest.dk/danmark/regioner/1085

2. Link tingene (ressourcerne) til hinanden

Hypermedia Driving Application State

Eksempel:

	
  <?xml version="1.0" encoding="utf-8" ?>
  <kommune ref=http://oiorest.dk/danmark/kommuner/101 
    xmlns="http://itst.dk/schemas/danmarkservice">
    <nr>101</nr> 
    <navn>København</navn> 
    <veje ref="http://oiorest.dk/danmark/kommuner/101/veje" /> 
    <adresser ref="http://oiorest.dk/danmark/kommuner/101/adresser" /> 
  </kommune>
  

3. Alle ressourcer tilgås via samme interface

Metode Beskrivelse Egenskaber
GET Modtag information (muligvis cached) safe, idempotent, cacheable
PUT Opdater eller opret med kendt id. idempotent
DELETE Slet idempotent
POST Opret  

4. Tillad forskellige repræsentationer af samme resource

Self-Describing Messages

Eksempler:

XML: http://oiorest.dk/danmark/kommuner/173/lokaliteter/Sorgenfri Slot/adresser.xml

JSON: http://oiorest.dk/danmark/kommuner/173/lokaliteter/Sorgenfri Slot/adresser.json

Google Earth format: http://oiorest.dk/danmark/kommuner/173/lokaliteter/Sorgenfri Slot/adresser.kml

5. Kommuniker tilstandsløs

Hvert request er står alene. Den REST baserede web service husker ikke foregående kald fra samme klientapplikation.

Første request kan håndteres af en server; andet request fra samme klient kan håndteres af en anden server. Tilstandsløsheden gør det bl.a. lettere at skalere sin løsning samt at debugge den.