rest og hypermedia
TRANSCRIPT
![Page 1: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/1.jpg)
REST og Hypermedia
Miniseminar NTNU
Janniche Haugen
![Page 2: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/2.jpg)
Litt om meg…
![Page 3: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/3.jpg)
![Page 4: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/4.jpg)
BILDE AV DIGIPOST
![Page 5: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/5.jpg)
Integrasjon
![Page 6: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/6.jpg)
Utfordringer ved integrasjon
Oppetid
Skalerbarhet
State
Endringer over tid /versjonshåndtering av grensesnitt
Forskjellige klienter har forskjellige behov
+++
![Page 7: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/7.jpg)
REST
![Page 8: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/8.jpg)
REpresentational State Transfer
![Page 9: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/9.jpg)
Roy T. Fielding:
![Page 10: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/10.jpg)
WWW
![Page 11: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/11.jpg)
Fordeler med webbens infrastruktur
Enkel, kjent protokoll
Løs kobling
Skalerbarhet
![Page 12: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/12.jpg)
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
![Page 13: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/13.jpg)
“Web-modenhet” handler om i hvilken grad man utnytter webbens infrastruktur i
applikasjonen sin
![Page 14: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/14.jpg)
Case
Bestille en flybillett hos Norwegian
![Page 15: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/15.jpg)
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”
![Page 16: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/16.jpg)
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
![Page 17: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/17.jpg)
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
![Page 18: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/18.jpg)
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
![Page 19: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/19.jpg)
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
![Page 20: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/20.jpg)
HATEOAS
![Page 21: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/21.jpg)
Hypermedia AsTheEngineOfApplication State
![Page 22: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/22.jpg)
I steden for å holde state delt mellom klient ogserver, representerer vi den som overganger i
en forretningsprotokoll.
![Page 23: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/23.jpg)
I steden for at du på forhånd skal vite alt, vildu bli presentert muligheter på veien.
![Page 24: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/24.jpg)
Enkelt eller lett?
![Page 25: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/25.jpg)
For å være RESTful må man brukehypermedia for å drive en
forretningsprotokoll
![Page 26: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/26.jpg)
JSON støtter ikke hypermedia…
![Page 27: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/27.jpg)
… og vi mister derfor mange fordeler ved åutnytte webbens protokoller og infrastruktur.
![Page 28: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/28.jpg)
![Page 29: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/29.jpg)
Referanser
Roy T. Fieldings blog:
http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
![Page 30: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/30.jpg)
![Page 31: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/31.jpg)
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
![Page 32: REST og hypermedia](https://reader030.vdocuments.pub/reader030/viewer/2022032421/55a69da91a28abe77d8b47f4/html5/thumbnails/32.jpg)
Nå: tilbake til R7 for fellessesjon