View
473
Download
1
Category
Tags:
Preview:
DESCRIPTION
Slides for my talk @ RubyFuza 2012
Citation preview
TAKING THE HYPE OUT OF HYPERMEDIA
ryan.lemmer@factor10.com // @ryanlemmer // GMT+2
BUILDING UI
TEMPLATE DRIVEN
TEMPLATE DRIVEN
<table><tr><td> <%= @cart.total %> </td>...
</tr></table>
DATA + TEMPLATE DRIVEN
DATA + TEMPLATE DRIVEN
{ total: 987, discount: 10, ...}
DATA + TEMPLATE DRIVEN
{ total: 987, discount: 10, ...}
AJAX GET /cart/1
CONSISTENCY
CONSISTENCY
CONSISTENCY
CONSISTENCY
CONSISTENCY
... MAKES TESTABILITY TOUGH
(LACK OF)
TESTABILITYto test, you need a (nice) handle on the situation
TESTABILITYto test, you need a (nice) handle on the situation
# capybarait "signs me in" do within("#session") do fill_in 'Login', :with => 'boo@hoo.com' fill_in 'Password', :with => 'secrat(sic)' end click_link 'Sign in'end
INTERACTIONS
INTERACTIONS
INTERACTIONS
INTERACTIONS
INTERACTIONSIMPLICIT
INTERACTIONSIMPLICIT
def update_item_qty @item = @cart.items.find(params[:id])
if @item.update_attributes(:quantity => params[:qty]) redirect_to(@item) else render "edit" endend
LAY OF THE LAND
LAY OF THE LAND
LAY OF THE LAND
LAY OF THE LAND
HYPERMEDIA DRIVEN
HYPERMEDIA DRIVEN
{ data: {
total: 987, discount: 10, ...},
links: {{rel: “checkout” uri: “...”}
}
HYPERMEDIA DRIVEN
{ data: {
total: 987, discount: 10, ...},
links: {{rel: “checkout” uri: “...”}
}
after /checkout
{ data: {
total: 987, discount: 10, ...},
links: {}}
HYPERMEDIA DSL
HYPERMEDIA DSLGET /cart/12312312
HYPERMEDIA DSLGET /cart/12312312
POST /cart/12312312
HYPERMEDIA
HYPERMEDIA
HYPERMEDIA
only for “open” carts
HYPERMEDIA+STATEMACHINE
HYPERMEDIA+STATEMACHINE
NEXT STEP ??
HYPERMEDIA+STATEMACHINE
NEXT STEP ??
resource state machine
HYPERMEDIA+STATEMACHINE
NEXT STEP ??
resource state machine
only checkout if cart is “open”
EXPLICIT INTERACTIONS
EXPLICIT INTERACTIONS
SERVER SIDE INTERACTION
LAYER
EXPLICIT INTERACTIONS
SERVER SIDE INTERACTION
LAYER
HATEOAS
INTERACTION LAYER
INTERACTION LAYER
“STRUCTURE”
HYPERMEDIA “FLOW”
AND CONSISTENCY?
AND CONSISTENCY?
removethen RELOAD
AND CONSISTENCY?
removethen RELOAD
ARCHITECTURE
ARCHITECTURE
WHAT’S NEXT?* Smart Hypermedia clients* Hypermedia Types => (HTML Forms, ATOM, ...)* machine-to-machine API’s => dynamic, executable
THANKSaslam khan
andreas brinklennart ohlsson
@factor10
Recommended