REST og Hypermedia
Miniseminar NTNU
Janniche Haugen
Litt om meg…
BILDE AV DIGIPOST
Integrasjon
Utfordringer ved integrasjon
Oppetid
Skalerbarhet
State
Endringer over tid /versjonshåndtering av grensesnitt
Forskjellige klienter har forskjellige behov
+++
REST
REpresentational State Transfer
Roy T. Fielding:
WWW
Fordeler med webbens infrastruktur
Enkel, kjent protokoll
Løs kobling
Skalerbarhet
HTTP
Verb:
– GET
– POST
– PUT
– DELETE
– OPTIONS, HEAD, TRACE, CONNECT, PATCH
Request
– URI, verb, headere og en payload
Response
– Respons kode (200 ok, 404 Not Found, ++), headere og en payload
“Web-modenhet” handler om i hvilken grad man utnytter webbens infrastruktur i
applikasjonen sin
Case
Bestille en flybillett hos Norwegian
Web Maturity Level 0
En URI
Ett HTTP-verb
Bestilling:
– POST av en stor xml eller lignende til en gitt URI, for eksempelhttp://www.norwegian.no
– Payload inneholder all info om hva som skal gjøres, alle parametere
– Typisk SOAP
Bruker HTTP kun som en tunnel for et “RPC-kall”
Web Maturity Level 1
Flere URI’er
Ett HTTP-verb
Eksempel:
– Norwegian kan tilby flere URI’er: for vanlig bestilling, gruppereiser ogandre operasjoner og man benytter forskjelige URI’er for forskjelligeoperasjoner, men kun ett HTTP-verb støttes per URI
– http://www.norwegian.no/bestilling
– http://www.norwegian.no/gruppereise
– http://www.norwegian.no/bonusprogram
Hver av tjenestene bak hver URI er her mindre komplekse
Web Maturity Level 2
Flere URI’er
Flere HTTP-verb
Eksempel:
- Norwegian kan tilby flere URI’er hvor man kan f.eks
- GET http://norwegian.no/minereservasjoner/user/1/reservations
- DELETE http://norwegian.no/minereservasjoner/user/1/reservations/2
- Typisk CRUD service
Bruker HTTP verb og statuskoder til å kontrollere interaksjon, og fårderfor utbytte av robustheten som ligger i webbens infrastruktur
Web Maturity Level 3
Flere URI’er
Flere HTTP-verb
Altså samme som Level 2…
…MEN, bruker i tillegg hypermedia for å styre flyten mellom ressurser
Hypermedia
Linker
<a href="http://norwegian.no/minesider”>Mine sider</a>
<link href="http://norwegian.no/….." rel=”betaling” />
Finnes også andre typer som forms, men vi konsentrerer oss om linker idag
HATEOAS
Hypermedia AsTheEngineOfApplication State
I steden for å holde state delt mellom klient ogserver, representerer vi den som overganger i
en forretningsprotokoll.
I steden for at du på forhånd skal vite alt, vildu bli presentert muligheter på veien.
Enkelt eller lett?
For å være RESTful må man brukehypermedia for å drive en
forretningsprotokoll
JSON støtter ikke hypermedia…
… og vi mister derfor mange fordeler ved åutnytte webbens protokoller og infrastruktur.
Referanser
Roy T. Fieldings blog:
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
BEKK CONSULTING ASSKUR 39, VIPPETANGEN. P.O. BOX 134 SENTRUM, 0102 OSLO, NORWAY. WWW.BEKK.NO
Janniche Haugen
Manager
+47 986 28 859
miss_haugen @ twitter
Nå: tilbake til R7 for fellessesjon