Hypermedia
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Hypermedia

on

  • 895 views

A presentation I had April 13th 2011

A presentation I had April 13th 2011

Statistics

Views

Total Views
895
Views on SlideShare
886
Embed Views
9

Actions

Likes
0
Downloads
10
Comments
0

1 Embed 9

http://www.techgig.com 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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.
  • Support for modifying control data for update requests (e. g. Content-* headers).
  • Support for indiciating the interface method for requests (e.g. HTTP GET,POST,PUT,DELETE methods).

Hypermedia Presentation Transcript

  • 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" />
  • 24. Kontrolldata for oppdateringsforespørsler
    HTML:
    Atom: Atompub
  • 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
  • 34. Takk for meg