36
HTML HYPERMEDIA APIS AND ADAPTIVE WEB DESIGN Gustaf Nilsson Kotte / @gustaf_nk

HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

Embed Size (px)

Citation preview

Page 1: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HTML HYPERMEDIA APIS AND

ADAPTIVE WEB DESIGNGustaf Nilsson Kotte / @gustaf_nk

Page 2: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

ABOUT ME

Page 3: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

TWO AREAS OF INTEREST

Hypermedia APIs - No application logic in API clientsAdaptive Web Design - Multi-device web

Working nicely together!

Page 4: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

DEMO, KANBAN BOARDHTML Hypermedia API + Adaptive Web Design

Page 5: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

API - FIRST ATTEMPT GET/POST items/

{ id: 123, name: "...", description: "...", status: "backlog|working|verify|done" }

Page 6: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

SERVER SIDE: ENFORCE RULESDon't trust clients

Page 7: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

CLIENT SIDE: USER FRIENDLY

Hide non-valid transitionsShow primary transitions "Read the specification"

Page 8: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

WITHOUT HYPERMEDIA

Page 9: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

PREFER FAT APIS OVER FAT CLIENTS

Page 10: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

http://martinfowler.com/articles/richardsonMaturityModel.html

Page 11: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HYPERMEDIA APIS

Page 12: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

WHAT IS THE HYPERMEDIA CONSTRAINT?

— Jon Moore

You do stuff by reading pages and then either

follow links or submit forms.

Page 13: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

USE HTML FOR HYPERMEDIA APIS

Lots of hypermedia controlsOld, standardized, everybody knows HTMLGood tooling support

https://vimeo.com/20781278http://codeartisan.blogspot.se/2012/07/using-html-as-media-type-for-your-api.html

http://amundsen.com/hypermedia/html/

Page 14: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

MORE...

Great for learning about hypermedia!

Page 15: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

INTERLUDE

JSON is ok :)

Page 16: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

EXAMPLE: NON-SEMANTIC HTML<li> <div><%= item.name %></div> <div><%= item.status %></div> <div><%= item.description %></div> <div> ... </div> <div> ... </div></li>

Page 17: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

EXAMPLE: MICROFORMATS2, ENTITIES<li class="h-item"> <div class="p-name"><%= item.name %></div> <div class="p-status"><%= item.status %></div> <div class="p-description"><%= item.description %></div> <div class="p-forms"> ... </div> <div class="p-links"> ... </div></li>

Page 18: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

EXAMPLE: MICROFORMATS2, FORMS<div class="p-forms"> <form data-rel="move backlog" action="/items/backlog" method="POST"> <input name="id" type="hidden" value="4"> <input title="submit" type="submit" value="Move to backlog"> </form> <form data-rel="move verify next" action="/items/verify" method="POST"> <input name="id" type="hidden" value="4"> <input title="submit" type="submit" value="Move to verify"> </form></div>

Page 19: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HYPERMEDIA APISExpose use casesMaximize user percieved value per request (size)Avoid "chatty" interactions (latency)

Page 20: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

MOBILE FIRSTExpose use casesMaximize user percieved value per request (size)Avoid "chatty" interactions (latency)

Page 21: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HTML HYPERMEDIA APIS ❤ MOBILE FIRST

Page 22: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

http://filamentgroup.com/lab/ajax_includes_modular_content/

http://bradfrostweb.com/blog/mobile/beyond-media-queries-anatomy-of-an-adaptive-web-design/

Page 23: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

http://bradfrostweb.com/blog/mobile/beyond-media-queries-anatomy-of-an-adaptive-web-design/

Page 24: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

ADAPTIVE WEB DESIGNResponsive web design

Feature detectionDevice APIs

PerformanceConditional loading

Content strategyTouch

Platform optimizationErgonomics

...

http://bradfrostweb.com/blog/mobile/beyond-media-queries-anatomy-of-an-adaptive-web-design

Page 25: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

PROGRESSIVE ENHANCEMENT

Page 26: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

THE API AND THE WEB CAN BE THE SAME THING!

HTML Hypermedia APIs ❤ Mobile First

Mobile First ❤ all web browsers and devices

Page 27: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

THE API AND THE WEB CAN BE THE SAME THING!

HTML Hypermedia APIs ❤

Adaptive Web Design

Page 28: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HTML HYPERMEDIA APIS + AWD

Page 29: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HIGH LEVEL VIEWSame code for web and API

...yes, they share templates too

Separate URLs

Optimize for both perspectives

Page 30: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

DEMO: CHANGING THE APPLICATION

Page 31: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

SUMMARY

Page 32: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HTML Hypermedia APIs ❤ Mobile First

Mobile First ❤ all web browsers and devices

Page 33: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

HTML Hypermedia APIs ❤

Adaptive Web Design

Page 34: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

FURTHER EXPLORATION, BOOKS, Mike Amundsen Building Hypermedia APIs

with HTML5 and Node

, Steve Klabnik Designing Hypermedia APIs

, Aaron Gustafson Adaptive Web Design

Page 35: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

FURTHER EXPLORATION, ONLINE, Brad Frost Beyond Media Queries:

Anatomy of an Adaptive Web Design

, Nicolas Zakas Progressive Enhancement 2.0

(et al), Stefan Tilkov Resource-oriented Client Architecture

Page 36: HTML Hypermedia APIs and Adaptive Web Design - jDays 2013

THANK YOU!Gustaf Nilsson Kotte / @gustaf_nk

Code: https://github.com/gustafnk/kanban-awd-api

Demo: and http://kanban-awd.herokuapp.com/ http://kanban-api.herokuapp.com

Slides: http://www.slideshare.net/GustafKotte/html-hypermedia-apis-and-adaptive-web-design-j