Your SlideShare is downloading. ×
Hypermedia
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hypermedia

784

Published on

A presentation I had April 13th 2011

A presentation I had April 13th 2011

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
784
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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).
  • 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

    ×