evolve • Tune communication without redeploying clients • Move fast • Less code • Less maintenance • Less worries • Better life and everything* PROMISES * results may vary
Retrieves available state transitions from the toaster server • Decides what of available transitions to take (or none) • Nothing else! (e.g. assuming how cooking works) TOASTER CLIENT
stops offering set cook time in the cooking state • Client not following available affordances from server will break • Client following available affordances from server will stop showing the set cook time UI controls
•cook time Set Cook Time Set Cook Time • Toaster now immediately cooks after bread is inserted • Client not following available affordances from server will break • Client following available affordances from server will still be able to make a crispy toast
calculate FizzBuzz for given number • Server knows what is the next FizzBuzz • Clients may decide what is the step and at what number to end FBAAS FizzBuzz as a Service
while answer.hasLink(“next”) 4: answer = answer.follow(“next”, step: STEP, end: END) 5: print answer • This decoupled: • No hardcoded URLs • No Server logic on the Client • Completely driven by the Server
• Code on demand (optional) • Uniform interface • Identification of resources • Manipulation through representations • Self-descriptive messages • Hypermedia as the engine of application state Architectural Constraints