SlideShare une entreprise Scribd logo
1  sur  34
Erlend Hamnaberg BigOne 13. april 2011 Hypermedia
Disclaimer Jeg antar at deltakerene har kjennskap til REST. Jeg kommer ikke til å forklare REST her.
Hvem er jeg? Konsulent Java / Tech1 Laget Escenic sin REST-webservice Despot for HTTPCache4j, en browsercache i Java Aktiv på #rest på irc.freenode.net Nestleder i javaBin
Agenda HATEOAS Definisjon av Hypermedia Hypermediafaktorer Tips og triks
«Hypertext As The Engine Of Application State» HATEOAS eller ‘The hypertext constraint’
Ressurstilstand Hva som er på serveren nå
Applikasjonstilstand Hvilket «skjermbilde» klienten er på nå. Et «skjermbilde» kan være oppbygd av mange ressurser Hvilke oppgaver klienten kan gjøre basert på resultatet fra den foregående forespørslen. Hver interaksjon med serveren kan man si er en del av en tilstandsmaskin
Tilstandsmaskin – ordre Velg Godkjenn Betal Send Ønskeliste Fritt fra REST in Practice - RESTBucks
Definisjon av hypermedia “The use of text, data, graphics, audio and video as elements of an extended hypertext system in which all elements are linked so that the user can move between them at will” (min utheving)
Hva betyr dette? To elementtyper: Hypertekst Data (herunder: tekst, data, grafikk, audio og video)
Hypertekst? I sin enkleste form en link (URI).
Spesifikasjon Spesifikasjonen til hypermediaformatet er abstrakt. Sammenhengen mellom et instansdokument + link-relasjoner er hva som utgjør applikasjoner.
Registrerte hypermedia typer HTML ATOM VOICE/XML uri-list SMIL turtle CSS SVG
Hva med JSON og XML? ikke hypermedia format Ikke RESTfullt, pga punktet over Å gi application/json eller application/xml over HTTP er som å si: «Her har du en ting, men jeg kan ikke si hvordan den ser ut, eller hvordan du kan interaktere med den»
Hypermediafaktorer Linkstøtte: Utgående linker Inline linker Maler for søkestrenger Ikke-idempotente oppdateringer Idempotente oppdateringer
Utgående linker Eksempel: HTML: <a href="http://example.com"...>...<a/> Atom: <link href="http://example.com" .../> Uri-list: består kun av utgående linker
Inline linker HTML: <img src="http//img.example.com/123.jpg" .../> Atom: <content src="http//example.com/text.html"/>
Maler for søkestrenger HTML: Atom: Finnes ikke i standarden, kan lages som påbygg. (opensearch)
Ikke-idempotente oppdateringer HTML: Atom: Ikke i standarden, men i atompub
Idempotente oppdateringer HTML: må bruke Code-On-Demand (javascript) Atom: Ikke i standarden, men i atompub.
Hypermediafaktorer Kontrolldatastøtte Kontrolldata for leseforespørsler Kontrolldata for oppdateringsforespørsler Kontrolldata for grensesnittsmetoder Kontrolldata for linker
Kontrolldata for leseforespørsler HTML: Kan gjøres ved Code-On-Demand(JS) Atom: Finnes ikke. Xsl:include: <xsl:include href="http://www.example.org/newsfeed" accept="application/rss" />
Kontrolldata for oppdateringsforespørsler HTML: Atom: Atompub
Kontrolldata for grensesnittsmetoder HTML: method attributtet i <form> Atom: finnes ikke
Kontrolldata for linker HTML: Atom:
HTML Stort sett det eneste man trenger Kontekst til elementene gis via en profile attributt i <head>
Egne hypermedia format Det er mulig. Gjør et godt forsøk på å utrykke deg i et eksisterende format. Lag et generelt format for domenet, om du ikke kan bruke et eksisterende Tenk på hypermediafaktorerene når du designer La formatet du designer være protokolluavhenigig
Egne hypermedia format Tenk på utvidbarhet: feks XML namespaces Link-relasjoner bør være definert som URIer Det er fullt mulig å lage et JSON-basert hypermedia format. Men; man får veldig fort applikasjons lock-in. XML er enklere, pga namespacer som muliggjør gjenbruk av eksisterende formater.
Viktige ting å tenke på La den private objektgrafen på server/klient forbli privat Tenk heller foretningsregler/protokoller i stedet for serialisering. Hva kan man la være å eksponere? Versjonering? Du trenger det ikke med et godt designet hypermediaformat ALDRI send application/xml eller application/json med mindre dette er et endepunkt.
Anbefalt lesestoff Atompub: http://tools.ietf.org/html/rfc5023 H-Factors: http://amundsen.com/hypermedia/hfactor/ Fielding’s REST: http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Registrerte MIME-typer: http://www.iana.org/assignments/media-types/ Registrerte Link-relasjoner:http://www.iana.org/assignments/link-relations/ REST in Practice (bok) RESTful Web Services Cookbook (bok)
Andre ressurser http://amundsen.com/media-types/maze/format/ - forsøk på å designe et nytt hypermedia-format (ngarthl er meg)
Til slutt Hypermedia workshop med Mike Amundsen: http://java.no/event/180 Implementing RESTFul webapps med Mike Amundsen: http://java.no/event/177
Takk for meg

Contenu connexe

Similaire à Hypermedia

Blazor - en kjapp intro
Blazor - en kjapp introBlazor - en kjapp intro
Blazor - en kjapp introRunegri
 
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av AutentiseringsprosjektetIkt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektetleiftorger
 
Progressive web applications i praksis
Progressive web applications i praksisProgressive web applications i praksis
Progressive web applications i praksisHåvard Wigtil
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattformHåvard Wigtil
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattformHåvard Wigtil
 
Firefox OS - og web som mobil plattform
Firefox OS - og web som mobil plattformFirefox OS - og web som mobil plattform
Firefox OS - og web som mobil plattformHåvard Wigtil
 
Prototyping med Microsoft Web Matrix
Prototyping med Microsoft Web MatrixPrototyping med Microsoft Web Matrix
Prototyping med Microsoft Web MatrixØyvind Malin
 
REST og hypermedia
REST og hypermediaREST og hypermedia
REST og hypermediajanniche
 
Metadatahøsting
MetadatahøstingMetadatahøsting
MetadatahøstingOle Husby
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010ilmyggo
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenJoar Øyen
 
The Client Strikes Back
The Client Strikes BackThe Client Strikes Back
The Client Strikes BackMagnus Green
 
Introduksjon til Spring Boot
Introduksjon til Spring BootIntroduksjon til Spring Boot
Introduksjon til Spring BootHenrik Schwarz
 
Webteknologi Hoesten 2008
Webteknologi Hoesten 2008Webteknologi Hoesten 2008
Webteknologi Hoesten 2008Thordur Arnason
 
Dataporten for grunnopplæringa - Workshop September 2017
Dataporten for grunnopplæringa - Workshop September 2017Dataporten for grunnopplæringa - Workshop September 2017
Dataporten for grunnopplæringa - Workshop September 2017Andreas Åkre Solberg
 
Kundeseminar April 2014, Nytt i CorePublish
Kundeseminar April 2014, Nytt i CorePublishKundeseminar April 2014, Nytt i CorePublish
Kundeseminar April 2014, Nytt i CorePublishCoreTrek
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergFriprogsenteret
 

Similaire à Hypermedia (20)

Blazor - en kjapp intro
Blazor - en kjapp introBlazor - en kjapp intro
Blazor - en kjapp intro
 
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av AutentiseringsprosjektetIkt Fagforum - Presentasjon Av Autentiseringsprosjektet
Ikt Fagforum - Presentasjon Av Autentiseringsprosjektet
 
Progressive web applications i praksis
Progressive web applications i praksisProgressive web applications i praksis
Progressive web applications i praksis
 
Webteknologi
WebteknologiWebteknologi
Webteknologi
 
Webteknologi
WebteknologiWebteknologi
Webteknologi
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattform
 
Firefox os og web som mobil plattform
Firefox os og web som mobil plattformFirefox os og web som mobil plattform
Firefox os og web som mobil plattform
 
Firefox OS - og web som mobil plattform
Firefox OS - og web som mobil plattformFirefox OS - og web som mobil plattform
Firefox OS - og web som mobil plattform
 
Prototyping med Microsoft Web Matrix
Prototyping med Microsoft Web MatrixPrototyping med Microsoft Web Matrix
Prototyping med Microsoft Web Matrix
 
REST og hypermedia
REST og hypermediaREST og hypermedia
REST og hypermedia
 
Metadatahøsting
MetadatahøstingMetadatahøsting
Metadatahøsting
 
Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010Driftbarhet - Steg mot smidig drift, JavaZone 2010
Driftbarhet - Steg mot smidig drift, JavaZone 2010
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verden
 
The Client Strikes Back
The Client Strikes BackThe Client Strikes Back
The Client Strikes Back
 
Introduksjon til Spring Boot
Introduksjon til Spring BootIntroduksjon til Spring Boot
Introduksjon til Spring Boot
 
Webteknologi Hoesten 2008
Webteknologi Hoesten 2008Webteknologi Hoesten 2008
Webteknologi Hoesten 2008
 
Dataporten for grunnopplæringa - Workshop September 2017
Dataporten for grunnopplæringa - Workshop September 2017Dataporten for grunnopplæringa - Workshop September 2017
Dataporten for grunnopplæringa - Workshop September 2017
 
Teknisk gjennomgang av tm core
Teknisk gjennomgang av tm coreTeknisk gjennomgang av tm core
Teknisk gjennomgang av tm core
 
Kundeseminar April 2014, Nytt i CorePublish
Kundeseminar April 2014, Nytt i CorePublishKundeseminar April 2014, Nytt i CorePublish
Kundeseminar April 2014, Nytt i CorePublish
 
GoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen WahlbergGoOpen 2010: Jorgen Wahlberg
GoOpen 2010: Jorgen Wahlberg
 

Hypermedia

  • 1.
  • 2. Erlend Hamnaberg BigOne 13. april 2011 Hypermedia
  • 3. Disclaimer Jeg antar at deltakerene har kjennskap til REST. Jeg kommer ikke til å forklare REST her.
  • 4. Hvem er jeg? Konsulent Java / Tech1 Laget Escenic sin REST-webservice Despot for HTTPCache4j, en browsercache i Java Aktiv på #rest på irc.freenode.net Nestleder i javaBin
  • 5. Agenda HATEOAS Definisjon av Hypermedia Hypermediafaktorer Tips og triks
  • 6. «Hypertext As The Engine Of Application State» HATEOAS eller ‘The hypertext constraint’
  • 7. Ressurstilstand Hva som er på serveren nå
  • 8. Applikasjonstilstand Hvilket «skjermbilde» klienten er på nå. Et «skjermbilde» kan være oppbygd av mange ressurser Hvilke oppgaver klienten kan gjøre basert på resultatet fra den foregående forespørslen. Hver interaksjon med serveren kan man si er en del av en tilstandsmaskin
  • 9. Tilstandsmaskin – ordre Velg Godkjenn Betal Send Ønskeliste Fritt fra REST in Practice - RESTBucks
  • 10. Definisjon av hypermedia “The use of text, data, graphics, audio and video as elements of an extended hypertext system in which all elements are linked so that the user can move between them at will” (min utheving)
  • 11. Hva betyr dette? To elementtyper: Hypertekst Data (herunder: tekst, data, grafikk, audio og video)
  • 12. Hypertekst? I sin enkleste form en link (URI).
  • 13. Spesifikasjon Spesifikasjonen til hypermediaformatet er abstrakt. Sammenhengen mellom et instansdokument + link-relasjoner er hva som utgjør applikasjoner.
  • 14. Registrerte hypermedia typer HTML ATOM VOICE/XML uri-list SMIL turtle CSS SVG
  • 15. Hva med JSON og XML? ikke hypermedia format Ikke RESTfullt, pga punktet over Å gi application/json eller application/xml over HTTP er som å si: «Her har du en ting, men jeg kan ikke si hvordan den ser ut, eller hvordan du kan interaktere med den»
  • 16. Hypermediafaktorer Linkstøtte: Utgående linker Inline linker Maler for søkestrenger Ikke-idempotente oppdateringer Idempotente oppdateringer
  • 17. Utgående linker Eksempel: HTML: <a href="http://example.com"...>...<a/> Atom: <link href="http://example.com" .../> Uri-list: består kun av utgående linker
  • 18. Inline linker HTML: <img src="http//img.example.com/123.jpg" .../> Atom: <content src="http//example.com/text.html"/>
  • 19. Maler for søkestrenger HTML: Atom: Finnes ikke i standarden, kan lages som påbygg. (opensearch)
  • 20. Ikke-idempotente oppdateringer HTML: Atom: Ikke i standarden, men i atompub
  • 21. Idempotente oppdateringer HTML: må bruke Code-On-Demand (javascript) Atom: Ikke i standarden, men i atompub.
  • 22. Hypermediafaktorer Kontrolldatastøtte Kontrolldata for leseforespørsler Kontrolldata for oppdateringsforespørsler Kontrolldata for grensesnittsmetoder Kontrolldata for linker
  • 23. Kontrolldata for leseforespørsler HTML: Kan gjøres ved Code-On-Demand(JS) Atom: Finnes ikke. Xsl:include: <xsl:include href="http://www.example.org/newsfeed" accept="application/rss" />
  • 25. Kontrolldata for grensesnittsmetoder HTML: method attributtet i <form> Atom: finnes ikke
  • 26. Kontrolldata for linker HTML: Atom:
  • 27. HTML Stort sett det eneste man trenger Kontekst til elementene gis via en profile attributt i <head>
  • 28. Egne hypermedia format Det er mulig. Gjør et godt forsøk på å utrykke deg i et eksisterende format. Lag et generelt format for domenet, om du ikke kan bruke et eksisterende Tenk på hypermediafaktorerene når du designer La formatet du designer være protokolluavhenigig
  • 29. Egne hypermedia format Tenk på utvidbarhet: feks XML namespaces Link-relasjoner bør være definert som URIer Det er fullt mulig å lage et JSON-basert hypermedia format. Men; man får veldig fort applikasjons lock-in. XML er enklere, pga namespacer som muliggjør gjenbruk av eksisterende formater.
  • 30. Viktige ting å tenke på La den private objektgrafen på server/klient forbli privat Tenk heller foretningsregler/protokoller i stedet for serialisering. Hva kan man la være å eksponere? Versjonering? Du trenger det ikke med et godt designet hypermediaformat ALDRI send application/xml eller application/json med mindre dette er et endepunkt.
  • 31. Anbefalt lesestoff Atompub: http://tools.ietf.org/html/rfc5023 H-Factors: http://amundsen.com/hypermedia/hfactor/ Fielding’s REST: http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm Registrerte MIME-typer: http://www.iana.org/assignments/media-types/ Registrerte Link-relasjoner:http://www.iana.org/assignments/link-relations/ REST in Practice (bok) RESTful Web Services Cookbook (bok)
  • 32. Andre ressurser http://amundsen.com/media-types/maze/format/ - forsøk på å designe et nytt hypermedia-format (ngarthl er meg)
  • 33. Til slutt Hypermedia workshop med Mike Amundsen: http://java.no/event/180 Implementing RESTFul webapps med Mike Amundsen: http://java.no/event/177

Notes de l'éditeur

  1. Støtte for å endre Accept-* headersDiskusjon:@type har blitt diskutert til det ugjenkjennelige på rest-discuss mailinglistenÅ bare bruke verdien av @type i «Accept» header kan føre til starvation problematikk osv.
  2. Support for modifying control data for update requests (e. g. Content-* headers).
  3. Support for indiciating the interface method for requests (e.g. HTTP GET,POST,PUT,DELETE methods).