SlideShare a Scribd company logo
Building Hypermedia 
APIs in Javascript 
from homemade solution to using Fortune.js
You? 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
You? 
• Who uses APIs? 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
You? 
• Who uses APIs? 
• Who knows what Hypermedia APIs are? 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
You? 
• Who uses APIs? 
• Who knows what Hypermedia APIs are? 
• Who had ever build one? 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me 
• 3scale evangelist 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me 
• 3scale evangelist 
• API freak 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me 
• 3scale evangelist 
• API freak 
• Hacker in Residence 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me 
• 3scale evangelist 
• API freak 
• Hacker in Residence 
• Node.js, Meteor 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Hypermedia 101 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
you are already using 
Hypermedia APIs 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Core values 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Core values 
• Discoverable API 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Core values 
• Discoverable API 
• Machine readable API 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Core values 
• Discoverable API 
• Machine readable API 
• Link-based 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Example: Github 
GET api.github.com 
{ 
current_user_url: "https://api.github.com/user", 
authorizations_url: "https://api.github.com/authorizations", 
code_search_url: "https://api.github.com/search/code?q={query} 
{&page,per_page,sort,order}", 
emails_url: "https://api.github.com/user/emails", 
emojis_url: "https://api.github.com/emojis", 
events_url: "https://api.github.com/events", 
feeds_url: “https://api.github.com/feeds",ed{/owner}{/repo}", 
… 
team_url: "https://api.github.com/teams", 
user_url: "https://api.github.com/users/{user}", 
user_organizations_url: "https://api.github.com/user/orgs", 
user_repositories_url: "https://api.github.com/users/{user}/ 
repos{?type,page,per_page,sort}", 
user_search_url: "https://api.github.com/search/users?q={query} 
{&page,per_page,sort,order}" 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Example: building 
REST approach 
/rooms/r123 
/doors/d123 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Example: building 
Adding relations 
/rooms/r123 
• /rooms/r123/doors/d123 
/doors/d123 
• /doors/d123/rooms/r123 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Example: building 
Buildings have hallways 
/doors/1/rooms/1 
/doors/1/hallways/1 
/rooms/1/doors/1 
/rooms/1/hallways/1 
/hallways/1/doors/1 
/hallways/1/rooms/1 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me… 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Me… 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Let’s put Hypermedia in it 
Linking ressources 
• /rooms/1 
- rel: door, href: /what/ever/door 
- rel: door, href: /another/door 
• /door 
- rel: entry-to, href: /rooms/1 
- rel: entry-to, href: /hallways/1 
• /hallways/1 
- rel: floor, href: /floors/1 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
HATEOAS 
Hypermedia as the Engine of Application State 
• Basic implementation with Express 
• add “link” properties to the JSON response 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
HATEOAS 
GET mybuilding.com/rooms/1 
{ 
"data": { 
"name": "Kitchen", 
"id": "1", 
"links" : [ 
{ 
"rel": "door", 
"href": "https://mybuilding.com/rooms/12345678" 
}, { 
"rel": "door", 
"href": "https://theirbuilding.com/rooms/ 
12345678" 
} ] 
} 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
There is a framework for that 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Fortune.js 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Fortune.js 
• simple to setup 
var fortune = require('fortune') 
, app = fortune({ 
db: 'petstore' 
}) 
.resource('person', { 
name: String, 
age: Number, 
pets: ['pet'] //
Fortune.js 
HTTP Person Pet Notes 
GET /people /pets 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung 
Get a collection 
of resources, 
accepts query ? 
POST /people /pets 
Create a 
resource 
GET /people/:id /pets/:id Get a specific 
resource, or 
multiple: 1,2,3 
PUT /people/:id /pets/:id Create or update 
a resource 
PATCH /people/:id /pets/:id Patch a 
resource (see 
RFC 6902) 
DELETE /people/:id /pets/:id Delete a 
resource 
GET /people/:id/pets /pets/:id/owner Get a related 
resource (one 
level deep)
Fortune.js 
• JSON API spec 
{ 
"people": [ 
{ 
"id": "tO69XnLz7amaYVRq", 
"name": "Wall-E", 
"age": 1000, 
"links": { 
"pets": [ 
"dPuXqUJxRIn9cOdH" 
] 
} 
} 
], 
"links": { 
"people.pets": { 
"href": "/pets/{people.pets}", 
"type": "pets" 
} 
} 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Fortune.js 
• JSON API spec 
/people/tO69XnLz7amaYVRq 
{ 
"people": [ 
{ 
"id": "tO69XnLz7amaYVRq", 
"name": "Wall-E", 
"age": 1000, 
"links": { 
"pets": [ 
"dPuXqUJxRIn9cOdH" 
] 
} 
} 
], 
"links": { 
"people.pets": { 
"href": "/pets/{people.pets}", 
"type": "pets" 
} 
} 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Fortune.js 
• JSON API spec 
/people/tO69XnLz7amaYVRq 
{ 
"people": [ 
{ 
"id": "tO69XnLz7amaYVRq", 
"name": "Wall-E", 
"age": 1000, 
"links": { 
"pets": [ 
"dPuXqUJxRIn9cOdH" 
] 
} 
} 
], 
"links": { 
"people.pets": { 
"href": "/pets/{people.pets}", 
"type": "pets" 
} 
} 
} 
/pets/dPuXqUJxRIn9cOdH 
{ 
"pets": [ 
{ 
"id": "dPuXqUJxRIn9cOdH", 
"name": "Cucaracha", 
"age": 1000, 
"links": { 
"owner": "tO69XnLz7amaYVRq" 
} 
} 
], 
"links": { 
"pets.owner": { 
"href": "/people/{pets.owner}", 
"type": "people" 
} 
} 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Fortune.js 
adapters for NeDB, MongoDB, MySQL, Postgres, SQLite 
handles all the routing 
handles database interactions 
hooks for specific logic before/after interacting with 
resources 
authentication not implemented (build your own) 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
API-based game: 
APIbunny 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
{ 
north: { ref: 'cell', inverse: 'south' }, 
east: { ref: 'cell', inverse: 'west' }, 
south: { ref: 'cell', inverse: 'north' }, 
west: { ref: 'cell', inverse: 'east' } 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• Inverse relation does not work in case of maze 
{ 
north: { ref: 'cell', inverse: 'south' }, 
east: { ref: 'cell', inverse: 'west' }, 
south: { ref: 'cell', inverse: 'north' }, 
west: { ref: 'cell', inverse: 'east' } 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• Inverse relation does not work in case of maze 
{ 
north: { ref: 'cell', inverse: 'south' }, 
east: { ref: 'cell', inverse: 'west' }, 
south: { ref: 'cell', inverse: 'north' }, 
west: { ref: 'cell', inverse: 'east' } 
} 
1 4 7 
2 5 8 
3 6 9 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• Inverse relation does not work in case of maze 
{ 
north: { ref: 'cell', inverse: 'south' }, 
east: { ref: 'cell', inverse: 'west' }, 
south: { ref: 'cell', inverse: 'north' }, 
west: { ref: 'cell', inverse: 'east' } 
} 
1 4 7 
2 5 8 
3 6 9 
expected on #4 
{ 
west:1 
east:7 
south:5 
} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• Inverse relation does not work in case of maze 
{ 
north: { ref: 'cell', inverse: 'south' }, 
east: { ref: 'cell', inverse: 'west' }, 
south: { ref: 'cell', inverse: 'north' }, 
west: { ref: 'cell', inverse: 'east' } 
} 
1 4 7 
2 5 8 
3 6 9 
expected on #4 
{ 
west:1 
east:7 
south:5 
} 
east of #1 is #4 -> west of #4 is #1 
but east of #7 is #4 -> west of #4 is #7 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• POST requests format is not usual 
{"people":[{"age":1000,"name":"Wall-E"}]} 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
APIbunny 
• thousands players, 44 winners, ~10 code shared 
• Open https://github.com/picsoung/apibunny/ 
• V2 is coming ;) 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Ressources 
• http://apicodex.3scale.net/ 
• http://amundsen.com/hypermedia/ 
• http://www.designinghypermediaapis.com/ 
• https://www.youtube.com/watch?v=_UG7u7ARTfM 
(APIStrat SF) 
• APIdays and APIstrat conferences 
• API-craft meetup + google group 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
Questions? 
" picsoung !picsoung 
HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung

More Related Content

What's hot (10)

The Apache Software Foundation - Ted's Tool Time - Sep 2015
The Apache Software Foundation - Ted's Tool Time - Sep 2015The Apache Software Foundation - Ted's Tool Time - Sep 2015
The Apache Software Foundation - Ted's Tool Time - Sep 2015
Ted Vinke
 
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike CialowiczTaking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Atlassian
 
Wrapping and Securing REST APIs with GraphQL
Wrapping and Securing REST APIs with GraphQLWrapping and Securing REST APIs with GraphQL
Wrapping and Securing REST APIs with GraphQL
Roy Derks
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
Judy Breedlove
 
Async API specification
Async API specificationAsync API specification
Async API specification
Nordic APIs
 
20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter API
Pascal Alberty
 
Operational Visibility at Global Scale
Operational Visibility at Global ScaleOperational Visibility at Global Scale
Operational Visibility at Global Scale
Sangeeta Narayanan
 
Apache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 SessionApache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 Session
Serge Huber
 
Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...
Jahia Solutions Group
 
Digital Publishing Made Easy with the OSCI Toolkit
 Digital Publishing Made Easy with the OSCI Toolkit Digital Publishing Made Easy with the OSCI Toolkit
Digital Publishing Made Easy with the OSCI Toolkit
Kyle Jaebker
 
The Apache Software Foundation - Ted's Tool Time - Sep 2015
The Apache Software Foundation - Ted's Tool Time - Sep 2015The Apache Software Foundation - Ted's Tool Time - Sep 2015
The Apache Software Foundation - Ted's Tool Time - Sep 2015
Ted Vinke
 
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike CialowiczTaking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Taking Gliffy to the Cloud – Moving to Atlassian Connect - Mike Cialowicz
Atlassian
 
Wrapping and Securing REST APIs with GraphQL
Wrapping and Securing REST APIs with GraphQLWrapping and Securing REST APIs with GraphQL
Wrapping and Securing REST APIs with GraphQL
Roy Derks
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
Judy Breedlove
 
Async API specification
Async API specificationAsync API specification
Async API specification
Nordic APIs
 
20130504 - FeWeb - Twitter API
20130504  - FeWeb - Twitter API20130504  - FeWeb - Twitter API
20130504 - FeWeb - Twitter API
Pascal Alberty
 
Operational Visibility at Global Scale
Operational Visibility at Global ScaleOperational Visibility at Global Scale
Operational Visibility at Global Scale
Sangeeta Narayanan
 
Apache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 SessionApache Unomi In Depth - ApacheCon EU 2015 Session
Apache Unomi In Depth - ApacheCon EU 2015 Session
Serge Huber
 
Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...Take back the control of your customer data with Apache Unomi - Developers Me...
Take back the control of your customer data with Apache Unomi - Developers Me...
Jahia Solutions Group
 
Digital Publishing Made Easy with the OSCI Toolkit
 Digital Publishing Made Easy with the OSCI Toolkit Digital Publishing Made Easy with the OSCI Toolkit
Digital Publishing Made Easy with the OSCI Toolkit
Kyle Jaebker
 

Viewers also liked (18)

Using 3rd party apis in car apps
Using 3rd party apis in car appsUsing 3rd party apis in car apps
Using 3rd party apis in car apps
3scale
 
API as a Growth Tool
API as a Growth ToolAPI as a Growth Tool
API as a Growth Tool
3scale
 
API Zen for Developers
API Zen for DevelopersAPI Zen for Developers
API Zen for Developers
3scale
 
APIS for Startups - Running your Business Inside Out
APIS for Startups - Running your Business Inside OutAPIS for Startups - Running your Business Inside Out
APIS for Startups - Running your Business Inside Out
3scale
 
The API-Application Semantic Gap
The API-Application Semantic GapThe API-Application Semantic Gap
The API-Application Semantic Gap
3scale
 
APIs for your Business + Stages of the API Lifecycle
APIs for your Business + Stages of the API LifecycleAPIs for your Business + Stages of the API Lifecycle
APIs for your Business + Stages of the API Lifecycle
3scale
 
How to Survive the API Copyright Apocalypse
How to Survive the API Copyright ApocalypseHow to Survive the API Copyright Apocalypse
How to Survive the API Copyright Apocalypse
3scale
 
APIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIsAPIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIs
3scale
 
Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016 Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016
3scale
 
API Model Canvas for successful API strategies and programs
API Model Canvas for successful API strategies and programsAPI Model Canvas for successful API strategies and programs
API Model Canvas for successful API strategies and programs
3scale
 
Deep dive: Monetize your API Programs
Deep dive: Monetize your API ProgramsDeep dive: Monetize your API Programs
Deep dive: Monetize your API Programs
Apigee | Google Cloud
 
The Fundamentals of Platform Strategy: Creating Genuine Value with APIs
The Fundamentals of Platform Strategy: Creating Genuine Value with APIsThe Fundamentals of Platform Strategy: Creating Genuine Value with APIs
The Fundamentals of Platform Strategy: Creating Genuine Value with APIs
3scale
 
A Connector, A Container and an API Walk Into a Bar: The Programmable World
A Connector, A Container and an API Walk Into a Bar: The Programmable World A Connector, A Container and an API Walk Into a Bar: The Programmable World
A Connector, A Container and an API Walk Into a Bar: The Programmable World
3scale
 
Monetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsMonetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital Assets
Apigee | Google Cloud
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That Worked
ProgrammableWeb
 
API Frenzy: API Strategy 101
API Frenzy: API Strategy 101API Frenzy: API Strategy 101
API Frenzy: API Strategy 101
Akana
 
Welcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API StrategyWelcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API Strategy
MuleSoft
 
API Business Models
API Business ModelsAPI Business Models
API Business Models
John Musser
 
Using 3rd party apis in car apps
Using 3rd party apis in car appsUsing 3rd party apis in car apps
Using 3rd party apis in car apps
3scale
 
API as a Growth Tool
API as a Growth ToolAPI as a Growth Tool
API as a Growth Tool
3scale
 
API Zen for Developers
API Zen for DevelopersAPI Zen for Developers
API Zen for Developers
3scale
 
APIS for Startups - Running your Business Inside Out
APIS for Startups - Running your Business Inside OutAPIS for Startups - Running your Business Inside Out
APIS for Startups - Running your Business Inside Out
3scale
 
The API-Application Semantic Gap
The API-Application Semantic GapThe API-Application Semantic Gap
The API-Application Semantic Gap
3scale
 
APIs for your Business + Stages of the API Lifecycle
APIs for your Business + Stages of the API LifecycleAPIs for your Business + Stages of the API Lifecycle
APIs for your Business + Stages of the API Lifecycle
3scale
 
How to Survive the API Copyright Apocalypse
How to Survive the API Copyright ApocalypseHow to Survive the API Copyright Apocalypse
How to Survive the API Copyright Apocalypse
3scale
 
APIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIsAPIs.JSON: Bootstrapping The Web of APIs
APIs.JSON: Bootstrapping The Web of APIs
3scale
 
Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016 Inside mind of a successful platform architect / Gartner APPS 2016
Inside mind of a successful platform architect / Gartner APPS 2016
3scale
 
API Model Canvas for successful API strategies and programs
API Model Canvas for successful API strategies and programsAPI Model Canvas for successful API strategies and programs
API Model Canvas for successful API strategies and programs
3scale
 
Deep dive: Monetize your API Programs
Deep dive: Monetize your API ProgramsDeep dive: Monetize your API Programs
Deep dive: Monetize your API Programs
Apigee | Google Cloud
 
The Fundamentals of Platform Strategy: Creating Genuine Value with APIs
The Fundamentals of Platform Strategy: Creating Genuine Value with APIsThe Fundamentals of Platform Strategy: Creating Genuine Value with APIs
The Fundamentals of Platform Strategy: Creating Genuine Value with APIs
3scale
 
A Connector, A Container and an API Walk Into a Bar: The Programmable World
A Connector, A Container and an API Walk Into a Bar: The Programmable World A Connector, A Container and an API Walk Into a Bar: The Programmable World
A Connector, A Container and an API Walk Into a Bar: The Programmable World
3scale
 
Monetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital AssetsMonetization - The Right Business Model for Your Digital Assets
Monetization - The Right Business Model for Your Digital Assets
Apigee | Google Cloud
 
Real World API Business Models That Worked
Real World API Business Models That WorkedReal World API Business Models That Worked
Real World API Business Models That Worked
ProgrammableWeb
 
API Frenzy: API Strategy 101
API Frenzy: API Strategy 101API Frenzy: API Strategy 101
API Frenzy: API Strategy 101
Akana
 
Welcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API StrategyWelcome to the API Economy: Developing Your API Strategy
Welcome to the API Economy: Developing Your API Strategy
MuleSoft
 
API Business Models
API Business ModelsAPI Business Models
API Business Models
John Musser
 
Ad

Similar to Building Hypermedia APIs in JavaScript (20)

API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015
Tom Johnson
 
Introduction to REST and Jersey
Introduction to REST and JerseyIntroduction to REST and Jersey
Introduction to REST and Jersey
Chris Winters
 
Web api's
Web api'sWeb api's
Web api's
umesh patil
 
Using an API
Using an APIUsing an API
Using an API
Adam Culp
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
Modern Web Applications Utilizing HTML5 APIs
Modern Web Applications Utilizing HTML5 APIsModern Web Applications Utilizing HTML5 APIs
Modern Web Applications Utilizing HTML5 APIs
Ido Green
 
Implementing new WebAPIs
Implementing new WebAPIsImplementing new WebAPIs
Implementing new WebAPIs
Julian Viereck
 
Implementing New Web
Implementing New WebImplementing New Web
Implementing New Web
Julian Viereck
 
WikiNext - Application Semantic Wiki
WikiNext - Application Semantic WikiWikiNext - Application Semantic Wiki
WikiNext - Application Semantic Wiki
Pavel Arapov
 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)
Clarence Ngoh
 
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
Cwinters Intro To Rest And JerREST and Jersey IntroductionseyCwinters Intro To Rest And JerREST and Jersey Introductionsey
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
elliando dias
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap
Brian LeRoux
 
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fallHtml5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
Shumpei Shiraishi
 
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Ido Green
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 Slides
Suraj Gupta
 
Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010
Christian Heilmann
 
Webapi
WebapiWebapi
Webapi
Jan Jongboom
 
Facebook APIs
Facebook APIsFacebook APIs
Facebook APIs
Andrew Sorensen
 
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
 
API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015API Documentation Workshop tcworld India 2015
API Documentation Workshop tcworld India 2015
Tom Johnson
 
Introduction to REST and Jersey
Introduction to REST and JerseyIntroduction to REST and Jersey
Introduction to REST and Jersey
Chris Winters
 
Using an API
Using an APIUsing an API
Using an API
Adam Culp
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
Modern Web Applications Utilizing HTML5 APIs
Modern Web Applications Utilizing HTML5 APIsModern Web Applications Utilizing HTML5 APIs
Modern Web Applications Utilizing HTML5 APIs
Ido Green
 
Implementing new WebAPIs
Implementing new WebAPIsImplementing new WebAPIs
Implementing new WebAPIs
Julian Viereck
 
WikiNext - Application Semantic Wiki
WikiNext - Application Semantic WikiWikiNext - Application Semantic Wiki
WikiNext - Application Semantic Wiki
Pavel Arapov
 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)
Clarence Ngoh
 
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
Cwinters Intro To Rest And JerREST and Jersey IntroductionseyCwinters Intro To Rest And JerREST and Jersey Introductionsey
Cwinters Intro To Rest And JerREST and Jersey Introductionsey
elliando dias
 
Palm Developer Day PhoneGap
Palm Developer Day PhoneGap Palm Developer Day PhoneGap
Palm Developer Day PhoneGap
Brian LeRoux
 
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Modern Web Applications Utilizing HTML5 (Dev Con TLV 06-2013)
Ido Green
 
Learn REST in 18 Slides
Learn REST in 18 SlidesLearn REST in 18 Slides
Learn REST in 18 Slides
Suraj Gupta
 
Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010Using Web Services with JavaScript - Fronttrends 2010
Using Web Services with JavaScript - Fronttrends 2010
Christian Heilmann
 
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
 
Ad

More from 3scale (20)

APISTRAT KEYNOTE: Surfing the Wave between Chaos and Innovation
APISTRAT KEYNOTE:  Surfing the Wave between Chaos and InnovationAPISTRAT KEYNOTE:  Surfing the Wave between Chaos and Innovation
APISTRAT KEYNOTE: Surfing the Wave between Chaos and Innovation
3scale
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
3scale
 
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
3scale
 
APIs and the Bot Revolution (APIDays Nordic, May 18)
APIs and the Bot Revolution (APIDays Nordic, May 18)APIs and the Bot Revolution (APIDays Nordic, May 18)
APIs and the Bot Revolution (APIDays Nordic, May 18)
3scale
 
Take Control of your APIs in a Microservice Architecture
Take Control of your APIs in a Microservice ArchitectureTake Control of your APIs in a Microservice Architecture
Take Control of your APIs in a Microservice Architecture
3scale
 
API workshop by AWS and 3scale
API workshop by AWS and 3scaleAPI workshop by AWS and 3scale
API workshop by AWS and 3scale
3scale
 
The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...
3scale
 
Entering the Platform Age: How to create genuine value for internal and exter...
Entering the Platform Age: How to create genuine value for internal and exter...Entering the Platform Age: How to create genuine value for internal and exter...
Entering the Platform Age: How to create genuine value for internal and exter...
3scale
 
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
3scale
 
Microservices in action: How to actually build them
Microservices in action: How to actually build themMicroservices in action: How to actually build them
Microservices in action: How to actually build them
3scale
 
Integrating, exposing and managing distributed data with RESTful APIs and op...
Integrating, exposing and managing distributed data with RESTful APIs and op...Integrating, exposing and managing distributed data with RESTful APIs and op...
Integrating, exposing and managing distributed data with RESTful APIs and op...
3scale
 
Building Successful API Programs in Higher Education
Building Successful API Programs in Higher EducationBuilding Successful API Programs in Higher Education
Building Successful API Programs in Higher Education
3scale
 
API Model Canvas (APIDays Mediterranea 2015)
API Model Canvas (APIDays Mediterranea 2015)API Model Canvas (APIDays Mediterranea 2015)
API Model Canvas (APIDays Mediterranea 2015)
3scale
 
APIsBerlin 3scale Data for a Web of APIs
APIsBerlin 3scale Data for a Web of APIs APIsBerlin 3scale Data for a Web of APIs
APIsBerlin 3scale Data for a Web of APIs
3scale
 
Kill the fail whale for your API
Kill the fail whale for your APIKill the fail whale for your API
Kill the fail whale for your API
3scale
 
Enhance Mobile Dev with APItools
Enhance Mobile Dev with APItoolsEnhance Mobile Dev with APItools
Enhance Mobile Dev with APItools
3scale
 
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
3scale
 
If data is the new oil, then interfaces are the new delivery means -- Ignite ...
If data is the new oil, then interfaces are the new delivery means -- Ignite ...If data is the new oil, then interfaces are the new delivery means -- Ignite ...
If data is the new oil, then interfaces are the new delivery means -- Ignite ...
3scale
 
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
3scale
 
API Integration with APItools.com
API Integration with APItools.comAPI Integration with APItools.com
API Integration with APItools.com
3scale
 
APISTRAT KEYNOTE: Surfing the Wave between Chaos and Innovation
APISTRAT KEYNOTE:  Surfing the Wave between Chaos and InnovationAPISTRAT KEYNOTE:  Surfing the Wave between Chaos and Innovation
APISTRAT KEYNOTE: Surfing the Wave between Chaos and Innovation
3scale
 
A Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices EditionA Connector, A Container and an API Walk into a Bar… Microservices Edition
A Connector, A Container and an API Walk into a Bar… Microservices Edition
3scale
 
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
Build and Manage Serverless APIs (APIDays Nordic, May 19th 2016)
3scale
 
APIs and the Bot Revolution (APIDays Nordic, May 18)
APIs and the Bot Revolution (APIDays Nordic, May 18)APIs and the Bot Revolution (APIDays Nordic, May 18)
APIs and the Bot Revolution (APIDays Nordic, May 18)
3scale
 
Take Control of your APIs in a Microservice Architecture
Take Control of your APIs in a Microservice ArchitectureTake Control of your APIs in a Microservice Architecture
Take Control of your APIs in a Microservice Architecture
3scale
 
API workshop by AWS and 3scale
API workshop by AWS and 3scaleAPI workshop by AWS and 3scale
API workshop by AWS and 3scale
3scale
 
The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...
3scale
 
Entering the Platform Age: How to create genuine value for internal and exter...
Entering the Platform Age: How to create genuine value for internal and exter...Entering the Platform Age: How to create genuine value for internal and exter...
Entering the Platform Age: How to create genuine value for internal and exter...
3scale
 
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
APIs and the Creation of Wealth in the Digital Economy - APIDays Paris 2015 K...
3scale
 
Microservices in action: How to actually build them
Microservices in action: How to actually build themMicroservices in action: How to actually build them
Microservices in action: How to actually build them
3scale
 
Integrating, exposing and managing distributed data with RESTful APIs and op...
Integrating, exposing and managing distributed data with RESTful APIs and op...Integrating, exposing and managing distributed data with RESTful APIs and op...
Integrating, exposing and managing distributed data with RESTful APIs and op...
3scale
 
Building Successful API Programs in Higher Education
Building Successful API Programs in Higher EducationBuilding Successful API Programs in Higher Education
Building Successful API Programs in Higher Education
3scale
 
API Model Canvas (APIDays Mediterranea 2015)
API Model Canvas (APIDays Mediterranea 2015)API Model Canvas (APIDays Mediterranea 2015)
API Model Canvas (APIDays Mediterranea 2015)
3scale
 
APIsBerlin 3scale Data for a Web of APIs
APIsBerlin 3scale Data for a Web of APIs APIsBerlin 3scale Data for a Web of APIs
APIsBerlin 3scale Data for a Web of APIs
3scale
 
Kill the fail whale for your API
Kill the fail whale for your APIKill the fail whale for your API
Kill the fail whale for your API
3scale
 
Enhance Mobile Dev with APItools
Enhance Mobile Dev with APItoolsEnhance Mobile Dev with APItools
Enhance Mobile Dev with APItools
3scale
 
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
Changing the Face of Transport via APIs. Talk at APIDays Paris 2014
3scale
 
If data is the new oil, then interfaces are the new delivery means -- Ignite ...
If data is the new oil, then interfaces are the new delivery means -- Ignite ...If data is the new oil, then interfaces are the new delivery means -- Ignite ...
If data is the new oil, then interfaces are the new delivery means -- Ignite ...
3scale
 
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
APIs and Unlocking the Value of Your Data - Strata Barcelona 2014
3scale
 
API Integration with APItools.com
API Integration with APItools.comAPI Integration with APItools.com
API Integration with APItools.com
3scale
 

Recently uploaded (20)

Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
How to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptxHow to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptx
Version 1 Analytics
 
If You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FMEIf You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FME
Safe Software
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOMEstablish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Anchore
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUEIntroduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
DevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical PodcastDevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical Podcast
Chris Wahl
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software DeveloperJeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptxISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any ApplicationData Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
National Fuels Treatments Initiative: Building a Seamless Map of Hazardous Fu...
Safe Software
 
How to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptxHow to Detect Outliers in IBM SPSS Statistics.pptx
How to Detect Outliers in IBM SPSS Statistics.pptx
Version 1 Analytics
 
If You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FMEIf You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FME
Safe Software
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOMEstablish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Anchore
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025Azure vs AWS  Which Cloud Platform Is Best for Your Business in 2025
Azure vs AWS Which Cloud Platform Is Best for Your Business in 2025
Infrassist Technologies Pvt. Ltd.
 
DevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical PodcastDevOps in the Modern Era - Thoughtfully Critical Podcast
DevOps in the Modern Era - Thoughtfully Critical Podcast
Chris Wahl
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
6th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 20256th Power Grid Model Meetup - 21 May 2025
6th Power Grid Model Meetup - 21 May 2025
DanBrown980551
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 

Building Hypermedia APIs in JavaScript

  • 1. Building Hypermedia APIs in Javascript from homemade solution to using Fortune.js
  • 2. You? HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 3. You? • Who uses APIs? HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 4. You? • Who uses APIs? • Who knows what Hypermedia APIs are? HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 5. You? • Who uses APIs? • Who knows what Hypermedia APIs are? • Who had ever build one? HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 6. Me HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 7. Me • 3scale evangelist HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 8. Me • 3scale evangelist • API freak HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 9. Me • 3scale evangelist • API freak • Hacker in Residence HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 10. Me • 3scale evangelist • API freak • Hacker in Residence • Node.js, Meteor HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 11. Hypermedia 101 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 12. you are already using Hypermedia APIs HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 13. Core values HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 14. Core values • Discoverable API HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 15. Core values • Discoverable API • Machine readable API HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 16. Core values • Discoverable API • Machine readable API • Link-based HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 17. Example: Github GET api.github.com { current_user_url: "https://api.github.com/user", authorizations_url: "https://api.github.com/authorizations", code_search_url: "https://api.github.com/search/code?q={query} {&page,per_page,sort,order}", emails_url: "https://api.github.com/user/emails", emojis_url: "https://api.github.com/emojis", events_url: "https://api.github.com/events", feeds_url: “https://api.github.com/feeds",ed{/owner}{/repo}", … team_url: "https://api.github.com/teams", user_url: "https://api.github.com/users/{user}", user_organizations_url: "https://api.github.com/user/orgs", user_repositories_url: "https://api.github.com/users/{user}/ repos{?type,page,per_page,sort}", user_search_url: "https://api.github.com/search/users?q={query} {&page,per_page,sort,order}" } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 18. Example: building REST approach /rooms/r123 /doors/d123 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 19. Example: building Adding relations /rooms/r123 • /rooms/r123/doors/d123 /doors/d123 • /doors/d123/rooms/r123 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 20. Example: building Buildings have hallways /doors/1/rooms/1 /doors/1/hallways/1 /rooms/1/doors/1 /rooms/1/hallways/1 /hallways/1/doors/1 /hallways/1/rooms/1 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 21. Me… HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 22. Me… HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 23. Let’s put Hypermedia in it Linking ressources • /rooms/1 - rel: door, href: /what/ever/door - rel: door, href: /another/door • /door - rel: entry-to, href: /rooms/1 - rel: entry-to, href: /hallways/1 • /hallways/1 - rel: floor, href: /floors/1 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 24. HATEOAS Hypermedia as the Engine of Application State • Basic implementation with Express • add “link” properties to the JSON response HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 25. HATEOAS GET mybuilding.com/rooms/1 { "data": { "name": "Kitchen", "id": "1", "links" : [ { "rel": "door", "href": "https://mybuilding.com/rooms/12345678" }, { "rel": "door", "href": "https://theirbuilding.com/rooms/ 12345678" } ] } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 26. There is a framework for that HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 27. Fortune.js HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 28. Fortune.js • simple to setup var fortune = require('fortune') , app = fortune({ db: 'petstore' }) .resource('person', { name: String, age: Number, pets: ['pet'] // "has many" relationship to pets }) .resource('pet', { name: String, age: Number, owner: 'person' // "belongs to" relationship to a person }) .listen(1337); HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 29. Fortune.js HTTP Person Pet Notes GET /people /pets HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung Get a collection of resources, accepts query ? POST /people /pets Create a resource GET /people/:id /pets/:id Get a specific resource, or multiple: 1,2,3 PUT /people/:id /pets/:id Create or update a resource PATCH /people/:id /pets/:id Patch a resource (see RFC 6902) DELETE /people/:id /pets/:id Delete a resource GET /people/:id/pets /pets/:id/owner Get a related resource (one level deep)
  • 30. Fortune.js • JSON API spec { "people": [ { "id": "tO69XnLz7amaYVRq", "name": "Wall-E", "age": 1000, "links": { "pets": [ "dPuXqUJxRIn9cOdH" ] } } ], "links": { "people.pets": { "href": "/pets/{people.pets}", "type": "pets" } } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 31. Fortune.js • JSON API spec /people/tO69XnLz7amaYVRq { "people": [ { "id": "tO69XnLz7amaYVRq", "name": "Wall-E", "age": 1000, "links": { "pets": [ "dPuXqUJxRIn9cOdH" ] } } ], "links": { "people.pets": { "href": "/pets/{people.pets}", "type": "pets" } } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 32. Fortune.js • JSON API spec /people/tO69XnLz7amaYVRq { "people": [ { "id": "tO69XnLz7amaYVRq", "name": "Wall-E", "age": 1000, "links": { "pets": [ "dPuXqUJxRIn9cOdH" ] } } ], "links": { "people.pets": { "href": "/pets/{people.pets}", "type": "pets" } } } /pets/dPuXqUJxRIn9cOdH { "pets": [ { "id": "dPuXqUJxRIn9cOdH", "name": "Cucaracha", "age": 1000, "links": { "owner": "tO69XnLz7amaYVRq" } } ], "links": { "pets.owner": { "href": "/people/{pets.owner}", "type": "people" } } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 33. Fortune.js adapters for NeDB, MongoDB, MySQL, Postgres, SQLite handles all the routing handles database interactions hooks for specific logic before/after interacting with resources authentication not implemented (build your own) HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 34. API-based game: APIbunny HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 35. APIbunny { north: { ref: 'cell', inverse: 'south' }, east: { ref: 'cell', inverse: 'west' }, south: { ref: 'cell', inverse: 'north' }, west: { ref: 'cell', inverse: 'east' } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 36. APIbunny • Inverse relation does not work in case of maze { north: { ref: 'cell', inverse: 'south' }, east: { ref: 'cell', inverse: 'west' }, south: { ref: 'cell', inverse: 'north' }, west: { ref: 'cell', inverse: 'east' } } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 37. APIbunny • Inverse relation does not work in case of maze { north: { ref: 'cell', inverse: 'south' }, east: { ref: 'cell', inverse: 'west' }, south: { ref: 'cell', inverse: 'north' }, west: { ref: 'cell', inverse: 'east' } } 1 4 7 2 5 8 3 6 9 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 38. APIbunny • Inverse relation does not work in case of maze { north: { ref: 'cell', inverse: 'south' }, east: { ref: 'cell', inverse: 'west' }, south: { ref: 'cell', inverse: 'north' }, west: { ref: 'cell', inverse: 'east' } } 1 4 7 2 5 8 3 6 9 expected on #4 { west:1 east:7 south:5 } HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 39. APIbunny • Inverse relation does not work in case of maze { north: { ref: 'cell', inverse: 'south' }, east: { ref: 'cell', inverse: 'west' }, south: { ref: 'cell', inverse: 'north' }, west: { ref: 'cell', inverse: 'east' } } 1 4 7 2 5 8 3 6 9 expected on #4 { west:1 east:7 south:5 } east of #1 is #4 -> west of #4 is #1 but east of #7 is #4 -> west of #4 is #7 HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 40. APIbunny • POST requests format is not usual {"people":[{"age":1000,"name":"Wall-E"}]} HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 41. APIbunny • thousands players, 44 winners, ~10 code shared • Open https://github.com/picsoung/apibunny/ • V2 is coming ;) HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 42. Ressources • http://apicodex.3scale.net/ • http://amundsen.com/hypermedia/ • http://www.designinghypermediaapis.com/ • https://www.youtube.com/watch?v=_UG7u7ARTfM (APIStrat SF) • APIdays and APIstrat conferences • API-craft meetup + google group HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung
  • 43. Questions? " picsoung !picsoung HTML5 Conference SF Oct. 2014 Nicolas Grenié - !picsoung