are hypermedia apis just hype? - aaron phethean (temenos) & daniel feist (mulesoft)
DESCRIPTION
Presented at JAX London 2013 Hypermedia or HATEOAS APIs get a lot of air cover but there aren't many of them in the wild. This session will summarize the challenges that exist when building hypermedia REST API’s and explain why it’s worth it. We’ll take a comparative look at various different approaches for using hypermedia in a typical REST API, before taking a closer look at an approach that automatically generates links from a semantically rich API definition.TRANSCRIPT
Are
just
‘Hypermedia API’s’
Hype? Daniel Feist, MuleSoft Aaron Phethean, Temenos
Introductions
* All contents Copyright © 2013, MuleSoft Inc.
Daniel Feist, Principal Architect @dfeist
● Founded 2006 by Ross Mason, to ‘Take the donkey work out of integration’.
● Now the most widely used integration platform for connecting SaaS and enterprise applications in the cloud and on-premise
Introductions
* All contents Copyright © 2013, MuleSoft Inc.
Aaron Phethean Product Manager @aphethean
• Founded in 1993; listed on the Swiss Stock Exchange (SIX: TEMN) • Market leading provider of banking software systems to retail, corporate, universal, private, Islamic, microfinance and community banks, wealth managers, and financial institutions • Headquartered in Geneva and with more than 59 offices worldwide • 1,500 customer deployments in more than 140 countries across the world.
Objective view
Goals
*
Avoid bigotry
Real world usage of Hypermedia
Levels of Hypermedia and advantages
Propose and review REST DSLs Tips & advice
New ideas
What is a Hypermedia API?
*
Whats Hype?
*
Whats Hype?
Hypermedia APIs - Innovation trigger?
*
?
Hypermedia APIs – Enlightenment; productivity?
*
?
Hypermedia API’s Inflated expectations?
*
?
Hypermedia APIs - Trough of disillusionment?
*
?
Where are Hypermedia APIs?
*
• Prevent breakage • Enabling discoverability • Standardising API clients
So .. this all just Hype?
Is
just ‘The Web’
Hype?
HTML Links
*
The Chasm
*
L2 API’s
Hypermedia API’s
Why haven’t Hypermedia API’s taken off?
The User
The User..
The User..
The Contract
A Typical API Contract...
* *
Web Contract?
* *
● Data ● Hypermedia
Controls (links) ● Presentation
Hypermedia Type for API’s
* *
No Standardized Hypermedia Type
* *
Hypermedia Type Style Version
HTML Enrich 4.0.1
HTML Microformats Enrich
XML Enrich 1.1
ATOM Wrap RFC
HAL Enrich Draft
Collection-JSON Wrap Draft
Custom Media-Types
Limited Standard Link Relations
* *
The Client
A Client
Who leads who?
* *
A User-Agent
* *
Hypermedia Maturity Levels
Hypermedia Maturity Levels
Glory of Hypermedia
Shared Vocabulary
Interaction Services
Data Services
Level 2
Level 2
*
• Defines entities at URIs w/ flat or CRUD type services
• No links between resources
• Projects / examples - Twitter - Many others
Data Services
*
• Developers follow links before ultimately consuming a Data Service
• API often still includes a version
• Projects / examples - OData - PayPal API - GitHub v3
Interaction Services
*
• User-Agent let’s user follow links
• Available options and state are described through links
• Projects / examples - IRIS - Restbucks
* *
Shared Vocabulary
*
• Control navigation, state and presentation
• Use a well defined media type / shared vocabulary to control certain aspects of validation & rendering
• Projects / examples - Restfulobjects, Apache ISIS - Hydra, ALPS
Glory of Hypermedia
• Puts the user in total control
• Very well established; slowly changing media types
• Projects / examples - HTML5 - World Wide Web
Some Examples...
• Pragmatic
- ‘Practically ReSTful API’s’
• Human & Machine Friendly • Reusable Patterns
- Resource Types - Traits
• Open
Why?
http://raml.org/
What?
Demo
1. Design/Build your API
2. Document/Explore your API
3. Client/Server Contract for your API
Demo
Resource Interaction Model (RIM)
• Of Interaction Framework (Hypermedia Server)… - Reduce or eliminate client / server coupling - Put the user in control (Object, Action) - Reduce UI integration effort through mashup layer
Temenos Interaction Framework
*
Temenos is donating a Java based Hypermedia Server to the Open Source Communityhttp://temenostech.temenos.com/
https://github.com/temenostech/IRIS
A project called IRIS; it has three main goals:
1. To create web based services according to RESTful constraints
2. Aggregate / mashup multiple resource managers into a single interaction service
3. Provide a language to describe the interactions between these resources
Hypermedia Server
*
• RIM language / example - Conditional links - Link relations - Auto transitions - Workflow
• HAL Browser
Resource Interaction Model (RIM)
RIM Demo
Summary
• Who do you want to be in control? • Human end user? • More adaptive client.
• MediaType Selection • Hypermedia controls • Enrich with links vs. wrap
• There is value in just using links. - Whatever maturity level you use.
Summary
*
Thank You!