"Managing API Complexity". Matthew Flaming, Temboo

Yandex
YandexYandex
"Managing API Complexity". Matthew Flaming, Temboo
COPYRIGHT TEMBOO 2013
Managing API Complexity
!  Matthew Flaming
!  Director of SW Development at Temboo.com
!  Live in Moscow (thanks, YaC!)
COPYRIGHT TEMBOO 2013
My Terrible Secret
!  I hate APIs
!  (except for yours)
COPYRIGHT TEMBOO 2013
One API is Great
COPYRIGHT TEMBOO 2013
Many APIs, not so much
COPYRIGHT TEMBOO 2013
Where are all the apps?
!  9,970 APIs as of this morning
• programmableweb.com/apis/directory
!  There’s an explosion of amazing APIs on the web
right now, but...
!  Most apps only connect to a single API (or a handful
of similar APIs)
COPYRIGHT TEMBOO 2013
Two Problems
!  How do I connect to this API?
!  How do I make sure my app keeps working?
COPYRIGHT TEMBOO 2013
New learning curve per API
!  How does this API conceptually fit together?
!  How does this API handle the details?
• Calling methods?
• Data formats? (JSON or XML?)
• Authentication?
• Language support?
• Dates? Boolean values? Pagination?
• Etc. etc.
COPYRIGHT TEMBOO 2013
More fragility per API
!  How to track API updates?
!  How to test API integration points?
!  How to effectively migrate between APIs?
COPYRIGHT TEMBOO 2013
This is an API publisher problem too
!  If you build it, they won’t (necessarily) come
!  …and if they do, they might hate you for it
COPYRIGHT TEMBOO 2013
How can API publishers help?
!  Thinking different isn’t always a good thing
• REST is (usually) best
• Oauth 2.0 or HTTP Basic authentication
• Support both JSON and XML
• Keep your implementation details private
COPYRIGHT TEMBOO 2013
How can API publishers help?
!  Understand that an API is a social contract
• “It should keep working”
• Minimize churn
• Announce changes early, and loudly
• Bake in versioning
	

 	

 	

/myapi/v1.0/myresource
COPYRIGHT TEMBOO 2013
How can API publishers help?
!  Discoverability is your most important feature
• Documentation
• WSDL… or not
• JSON Discovery
	

www.googleapis.com/discovery/v1/apis	

• Client libraries
COPYRIGHT TEMBOO 2013
How can API publishers help?
!  Benefits of client libraries
• Enforce API consistency
• Provide a test harness
• Reduce user friction
• Help you think like an API consumer
COPYRIGHT TEMBOO 2013
Code generation is the answer
Expose language-agnostic metadata
	

github.com/wornik/swagger-codegen	

	

var findById = {!
'spec': {!
"description" : ”Find pet by ID",!
"path" : "/pet.{format}/{petId}",!
"summary" : "Find pet by ID",!
"method": "GET",!
"params" : [swagger.pathParam("petId", "ID of pet", "string")],!
"responseClass" : "Pet",!
"nickname" : "getPetById"!
},!
'action': function (req,res) {!
…function body here…!
}!
};!
COPYRIGHT TEMBOO 2013
Code generation is the answer
Use metadata to generate client libraries
	

www.stringtemplate.org	

	

/*!
$description$!
*/!
var $nickname$ = function(!
$params.fields:{paramName)$};separator=", "$,!
callback, errorCallback) { !
!
var options = { !
!method: $method$, !
!hostname: $host$, !
!path: getReqPath($path$, $params$), !
}; !
var request = http.request(options, !
!function(response) { !
!responseHandler(response, callback,errorCallback); !
});!
}!
COPYRIGHT TEMBOO 2013
How can API publishers help?
!  Make your APIs device-friendly
• Worry about data size
• Provide alternatives to Oauth
COPYRIGHT TEMBOO 2013
What about API consumers?
!  That’s all great, but…
COPYRIGHT TEMBOO 2013
What about API consumers?
!  Keep API integrations abstract and modular
!  Generalized open-source libraries
!  API management platforms
• We all love infrastructure virtualization…
• What about… code virtualization?
COPYRIGHT TEMBOO 2013
Temboo
!  Collects and normalizes APIs to give you one
consistent interface (“Choreographies”)
!  All the power of multiple APIs
!  Just one learning curve
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
COPYRIGHT TEMBOO 2013
Temboo
!  Search Twitter (PHP)
$session = new Temboo_Session('matthew', ’myApp', ’demo');!
!
// Instantiate the Choreo!
$choreo = new Twitter_Search_Tweets($session);!
!
// Get an input object for the Choreo and set credential!
$inputs = $choreo ->newInputs();!
$inputs->setCredential('TwitterOAuthCredential');!
!
// Set inputs!
$inputs->setQuery("Yac2013");!
!
// Execute Choreo and get results!
$results = $choreo->execute($inputs)->getResults();!
COPYRIGHT TEMBOO 2013
Temboo
!  Search Flickr (PHP)
$session = new Temboo_Session('matthew', ’myApp', ’demo');!
!
// Instantiate the Choreo!
$choreo = new Flickr_Photos_SearchPhotos($session);!
!
// Get an input object for the Choreo and set credential!
$inputs = $choreo ->newInputs();!
$inputs->setCredential(’FlickrOAuthCredential');!
!
// Set inputs!
$inputs->setText("Yac2013");!
!
// Execute Choreo and get results!
$results = $choreo->execute($inputs)->getResults();!
COPYRIGHT TEMBOO 2013
Temboo
!  Search Dropbox (PHP)
$session = new Temboo_Session('matthew', ’myApp', ’demo');!
!
// Instantiate the Choreo!
$choreo = new Dropbox_FilesAndMetadata_SearchFilesAndFolders($session);!
!
// Get an input object for the Choreo and set credential!
$inputs = $choreo ->newInputs();!
$inputs->setCredential(’DropboxOAuthCredential');!
!
// Set inputs!
$inputs->setQuery("Yac2013");!
!
// Execute Choreo and get results!
$results = $choreo->execute($inputs)->getResults();!
COPYRIGHT TEMBOO 2013
Temboo
!  Search Dropbox (PHP)
$session = new Temboo_Session('matthew', ’myApp', ’demo');!
!
// Instantiate the Choreo!
$choreo = new Dropbox_FilesAndMetadata_SearchFilesAndFolders($session);!
!
// Get an input object for the Choreo and set credential!
$inputs = $choreo ->newInputs();!
$inputs->setCredential(’DropboxOAuthCredential');!
!
// Set inputs!
$inputs->setQuery("Yac2013");!
!
// Execute Choreo and get results!
$results = $choreo->execute($inputs)->getResults();!
COPYRIGHT TEMBOO 2013
Temboo
!  Search Foursquare (PHP)
$session = new Temboo_Session('matthew', ’myApp', ’demo');!
!
// Instantiate the Choreo!
$choreo = new Foursquare_Venues_SearchVenues($session);!
!
// Get an input object for the Choreo and set credential!
$inputs = $choreo ->newInputs();!
$inputs->setCredential(’FoursquareOAuthCredential');!
!
$inputs->setLatitude("40.7186300");!
$inputs->setLongitude("-74.055840");!
!
// Execute Choreo and get results!
$results = $choreo->execute($inputs)->getResults();!
COPYRIGHT TEMBOO 2013
Temboo
Choreography
Metadata
PHP template Node.js template Ruby template
iOS template Python template
Java template cURL template Arduino template
COPYRIGHT TEMBOO 2013
Temboo
Choreography
Metadata
PHP template Node.js template Ruby template
iOS template Python template
Java template cURL template Arduino template
Patch
COPYRIGHT TEMBOO 2013
Automation will transform APIs
!  Code generation + frameworks
!  Increasing standardization
!  Decreasing friction
!  An exciting time to be a developer
COPYRIGHT TEMBOO 2013
Thanks!
matthew.flaming@temboo.com
@mflaming
@temboo
1 of 38

Recommended

Bullet: The Functional PHP Micro-Framework by
Bullet: The Functional PHP Micro-FrameworkBullet: The Functional PHP Micro-Framework
Bullet: The Functional PHP Micro-FrameworkVance Lucas
27.9K views51 slides
Writing Apps the Google-y Way by
Writing Apps the Google-y WayWriting Apps the Google-y Way
Writing Apps the Google-y WayPamela Fox
1.5K views67 slides
Mashups & APIs by
Mashups & APIsMashups & APIs
Mashups & APIsPamela Fox
2.3K views34 slides
Crafting Quality PHP Applications (PHPkonf 2018) by
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)James Titcumb
209 views111 slides
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018) by
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)James Titcumb
264 views111 slides
Crafting Quality PHP Applications (Bucharest Tech Week 2017) by
Crafting Quality PHP Applications (Bucharest Tech Week 2017)Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)James Titcumb
159 views105 slides

More Related Content

What's hot

Crafting Quality PHP Applications (PHP Benelux 2018) by
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)James Titcumb
707 views107 slides
Crafting Quality PHP Applications: an overview (PHPSW March 2018) by
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)James Titcumb
210 views109 slides
A Phing fairy tale - ConFoo13 by
A Phing fairy tale - ConFoo13A Phing fairy tale - ConFoo13
A Phing fairy tale - ConFoo13Stephan Hochdörfer
6.8K views76 slides
Outside-in Development with Cucumber and Rspec by
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecJoseph Wilk
8.1K views86 slides
Enter the app era with ruby on rails (rubyday) by
Enter the app era with ruby on rails (rubyday)Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)Matteo Collina
5K views61 slides
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017) by
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)James Titcumb
483 views104 slides

What's hot(20)

Crafting Quality PHP Applications (PHP Benelux 2018) by James Titcumb
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
James Titcumb707 views
Crafting Quality PHP Applications: an overview (PHPSW March 2018) by James Titcumb
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
James Titcumb210 views
Outside-in Development with Cucumber and Rspec by Joseph Wilk
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and Rspec
Joseph Wilk8.1K views
Enter the app era with ruby on rails (rubyday) by Matteo Collina
Enter the app era with ruby on rails (rubyday)Enter the app era with ruby on rails (rubyday)
Enter the app era with ruby on rails (rubyday)
Matteo Collina5K views
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017) by James Titcumb
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
Kicking off with Zend Expressive and Doctrine ORM (ConFoo YVR 2017)
James Titcumb483 views
Dip Your Toes in the Sea of Security (ConFoo YVR 2017) by James Titcumb
Dip Your Toes in the Sea of Security (ConFoo YVR 2017)Dip Your Toes in the Sea of Security (ConFoo YVR 2017)
Dip Your Toes in the Sea of Security (ConFoo YVR 2017)
James Titcumb244 views
Writing Apps the Google-y Way (Brisbane) by Pamela Fox
Writing Apps the Google-y Way (Brisbane)Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)
Pamela Fox1.9K views
Best practices for crafting high quality PHP apps (Bulgaria 2019) by James Titcumb
Best practices for crafting high quality PHP apps (Bulgaria 2019)Best practices for crafting high quality PHP apps (Bulgaria 2019)
Best practices for crafting high quality PHP apps (Bulgaria 2019)
James Titcumb254 views
Your Business. Your Language. Your Code - dpc13 by Stephan Hochdörfer
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13
Stephan Hochdörfer1.2K views
Crafting Quality PHP Applications (PHP Joburg Oct 2019) by James Titcumb
Crafting Quality PHP Applications (PHP Joburg Oct 2019)Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
James Titcumb263 views
Best practices for crafting high quality PHP apps (php[world] 2019) by James Titcumb
Best practices for crafting high quality PHP apps (php[world] 2019)Best practices for crafting high quality PHP apps (php[world] 2019)
Best practices for crafting high quality PHP apps (php[world] 2019)
James Titcumb260 views
Childthemes ottawa-word camp-1919 by Paul Bearne
Childthemes ottawa-word camp-1919Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919
Paul Bearne531 views
jQuery Anti-Patterns for Performance & Compression by Paul Irish
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & Compression
Paul Irish25.2K views
Enter the app era with ruby on rails by Matteo Collina
Enter the app era with ruby on railsEnter the app era with ruby on rails
Enter the app era with ruby on rails
Matteo Collina4.5K views
RESTFul API Design and Documentation - an Introduction by Miredot
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an Introduction
Miredot1.6K views
Turn your spaghetti code into ravioli with JavaScript modules by jerryorr
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
jerryorr2.1K views
Best practices for crafting high quality PHP apps (PHP South Africa 2018) by James Titcumb
Best practices for crafting high quality PHP apps (PHP South Africa 2018)Best practices for crafting high quality PHP apps (PHP South Africa 2018)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)
James Titcumb122 views

Similar to "Managing API Complexity". Matthew Flaming, Temboo

Yahoo is open to developers by
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developersChristian Heilmann
3.6K views89 slides
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014 by
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014Jean-Loup Yu
727 views49 slides
Mashup University 4: Intro To Mashups by
Mashup University 4: Intro To MashupsMashup University 4: Intro To Mashups
Mashup University 4: Intro To MashupsJohn Herren
2.7K views45 slides
Building Better Web APIs with Rails by
Building Better Web APIs with RailsBuilding Better Web APIs with Rails
Building Better Web APIs with RailsAll Things Open
1.4K views58 slides
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl... by
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...apidays
40 views82 slides
API Workshop: Deep dive into REST APIs by
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsTom Johnson
4.6K views80 slides

Similar to "Managing API Complexity". Matthew Flaming, Temboo(20)

Green Light for the Apps with Calaba.sh - DroidCon Paris 2014 by Jean-Loup Yu
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
Jean-Loup Yu727 views
Mashup University 4: Intro To Mashups by John Herren
Mashup University 4: Intro To MashupsMashup University 4: Intro To Mashups
Mashup University 4: Intro To Mashups
John Herren2.7K views
Building Better Web APIs with Rails by All Things Open
Building Better Web APIs with RailsBuilding Better Web APIs with Rails
Building Better Web APIs with Rails
All Things Open1.4K views
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl... by apidays
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...
APIdays Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...
apidays40 views
API Workshop: Deep dive into REST APIs by Tom Johnson
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
Tom Johnson4.6K views
KazooCon 2014 - Introduction to Kazoo APIs! by 2600Hz
KazooCon 2014 - Introduction to Kazoo APIs!KazooCon 2014 - Introduction to Kazoo APIs!
KazooCon 2014 - Introduction to Kazoo APIs!
2600Hz4.9K views
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs by Jorge Ferrer
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
Jorge Ferrer963 views
Developing Brilliant and Powerful APIs in Ruby & Python by SmartBear
Developing Brilliant and Powerful APIs in Ruby & PythonDeveloping Brilliant and Powerful APIs in Ruby & Python
Developing Brilliant and Powerful APIs in Ruby & Python
SmartBear1.7K views
JSON REST API for WordPress by Taylor Lovett
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
Taylor Lovett10.5K views
Advanced API Design: how an awesome API can help you make friends, get rich, ... by Jonathan Dahl
Advanced API Design: how an awesome API can help you make friends, get rich, ...Advanced API Design: how an awesome API can help you make friends, get rich, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Jonathan Dahl1.6K views
Open Event API by Avi Aryan
Open Event APIOpen Event API
Open Event API
Avi Aryan81 views
Plone api by Nejc Zupan
Plone apiPlone api
Plone api
Nejc Zupan1.8K views
Lessons Learned - Building YDN by Dan Theurer
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
Dan Theurer3.3K views

More from Yandex

Предсказание оттока игроков из World of Tanks by
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
48K views38 slides
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,... by
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
1.7K views47 slides
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса by
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
1.4K views70 slides
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса by
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
1.4K views147 slides
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро... by
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
1.2K views66 slides
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ... by
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
1.4K views77 slides

More from Yandex(20)

Предсказание оттока игроков из World of Tanks by Yandex
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
Yandex48K views
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,... by Yandex
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Yandex1.7K views
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса by Yandex
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Yandex1.4K views
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса by Yandex
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Yandex1.4K views
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро... by Yandex
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Yandex1.2K views
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ... by Yandex
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Yandex1.4K views
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб... by Yandex
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Yandex2.2K views
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро... by Yandex
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Yandex1.2K views
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд... by Yandex
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Yandex612 views
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд... by Yandex
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Yandex1K views
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма... by Yandex
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Yandex890 views
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ... by Yandex
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Yandex1.7K views
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров by Yandex
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex833 views
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас... by Yandex
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Yandex1.3K views
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб... by Yandex
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Yandex798 views
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб... by Yandex
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Yandex626 views
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ... by Yandex
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Yandex928 views
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас... by Yandex
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Yandex757 views
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш... by Yandex
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Yandex515 views
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро... by Yandex
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Yandex529 views

Recently uploaded

State of the Union - Rohit Yadav - Apache CloudStack by
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStackShapeBlue
106 views53 slides
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...James Anderson
126 views32 slides
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT by
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITShapeBlue
66 views8 slides
NTGapps NTG LowCode Platform by
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform Mustafa Kuğu
28 views30 slides
PharoJS - Zürich Smalltalk Group Meetup November 2023 by
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023Noury Bouraqadi
139 views17 slides
HTTP headers that make your website go faster - devs.gent November 2023 by
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023Thijs Feryn
26 views151 slides

Recently uploaded(20)

State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue106 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson126 views
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT by ShapeBlue
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBITUpdates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
Updates on the LINSTOR Driver for CloudStack - Rene Peinthor - LINBIT
ShapeBlue66 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu28 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi139 views
HTTP headers that make your website go faster - devs.gent November 2023 by Thijs Feryn
HTTP headers that make your website go faster - devs.gent November 2023HTTP headers that make your website go faster - devs.gent November 2023
HTTP headers that make your website go faster - devs.gent November 2023
Thijs Feryn26 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue40 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue25 views
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha... by ShapeBlue
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
Mitigating Common CloudStack Instance Deployment Failures - Jithin Raju - Sha...
ShapeBlue54 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue55 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc72 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue70 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue89 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray1042 views
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive by Network Automation Forum
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLiveAutomating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Automating a World-Class Technology Conference; Behind the Scenes of CiscoLive
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman38 views

"Managing API Complexity". Matthew Flaming, Temboo

  • 2. COPYRIGHT TEMBOO 2013 Managing API Complexity !  Matthew Flaming !  Director of SW Development at Temboo.com !  Live in Moscow (thanks, YaC!)
  • 3. COPYRIGHT TEMBOO 2013 My Terrible Secret !  I hate APIs !  (except for yours)
  • 5. COPYRIGHT TEMBOO 2013 Many APIs, not so much
  • 6. COPYRIGHT TEMBOO 2013 Where are all the apps? !  9,970 APIs as of this morning • programmableweb.com/apis/directory !  There’s an explosion of amazing APIs on the web right now, but... !  Most apps only connect to a single API (or a handful of similar APIs)
  • 7. COPYRIGHT TEMBOO 2013 Two Problems !  How do I connect to this API? !  How do I make sure my app keeps working?
  • 8. COPYRIGHT TEMBOO 2013 New learning curve per API !  How does this API conceptually fit together? !  How does this API handle the details? • Calling methods? • Data formats? (JSON or XML?) • Authentication? • Language support? • Dates? Boolean values? Pagination? • Etc. etc.
  • 9. COPYRIGHT TEMBOO 2013 More fragility per API !  How to track API updates? !  How to test API integration points? !  How to effectively migrate between APIs?
  • 10. COPYRIGHT TEMBOO 2013 This is an API publisher problem too !  If you build it, they won’t (necessarily) come !  …and if they do, they might hate you for it
  • 11. COPYRIGHT TEMBOO 2013 How can API publishers help? !  Thinking different isn’t always a good thing • REST is (usually) best • Oauth 2.0 or HTTP Basic authentication • Support both JSON and XML • Keep your implementation details private
  • 12. COPYRIGHT TEMBOO 2013 How can API publishers help? !  Understand that an API is a social contract • “It should keep working” • Minimize churn • Announce changes early, and loudly • Bake in versioning /myapi/v1.0/myresource
  • 13. COPYRIGHT TEMBOO 2013 How can API publishers help? !  Discoverability is your most important feature • Documentation • WSDL… or not • JSON Discovery www.googleapis.com/discovery/v1/apis • Client libraries
  • 14. COPYRIGHT TEMBOO 2013 How can API publishers help? !  Benefits of client libraries • Enforce API consistency • Provide a test harness • Reduce user friction • Help you think like an API consumer
  • 15. COPYRIGHT TEMBOO 2013 Code generation is the answer Expose language-agnostic metadata github.com/wornik/swagger-codegen var findById = {! 'spec': {! "description" : ”Find pet by ID",! "path" : "/pet.{format}/{petId}",! "summary" : "Find pet by ID",! "method": "GET",! "params" : [swagger.pathParam("petId", "ID of pet", "string")],! "responseClass" : "Pet",! "nickname" : "getPetById"! },! 'action': function (req,res) {! …function body here…! }! };!
  • 16. COPYRIGHT TEMBOO 2013 Code generation is the answer Use metadata to generate client libraries www.stringtemplate.org /*! $description$! */! var $nickname$ = function(! $params.fields:{paramName)$};separator=", "$,! callback, errorCallback) { ! ! var options = { ! !method: $method$, ! !hostname: $host$, ! !path: getReqPath($path$, $params$), ! }; ! var request = http.request(options, ! !function(response) { ! !responseHandler(response, callback,errorCallback); ! });! }!
  • 17. COPYRIGHT TEMBOO 2013 How can API publishers help? !  Make your APIs device-friendly • Worry about data size • Provide alternatives to Oauth
  • 18. COPYRIGHT TEMBOO 2013 What about API consumers? !  That’s all great, but…
  • 19. COPYRIGHT TEMBOO 2013 What about API consumers? !  Keep API integrations abstract and modular !  Generalized open-source libraries !  API management platforms • We all love infrastructure virtualization… • What about… code virtualization?
  • 20. COPYRIGHT TEMBOO 2013 Temboo !  Collects and normalizes APIs to give you one consistent interface (“Choreographies”) !  All the power of multiple APIs !  Just one learning curve
  • 30. COPYRIGHT TEMBOO 2013 Temboo !  Search Twitter (PHP) $session = new Temboo_Session('matthew', ’myApp', ’demo');! ! // Instantiate the Choreo! $choreo = new Twitter_Search_Tweets($session);! ! // Get an input object for the Choreo and set credential! $inputs = $choreo ->newInputs();! $inputs->setCredential('TwitterOAuthCredential');! ! // Set inputs! $inputs->setQuery("Yac2013");! ! // Execute Choreo and get results! $results = $choreo->execute($inputs)->getResults();!
  • 31. COPYRIGHT TEMBOO 2013 Temboo !  Search Flickr (PHP) $session = new Temboo_Session('matthew', ’myApp', ’demo');! ! // Instantiate the Choreo! $choreo = new Flickr_Photos_SearchPhotos($session);! ! // Get an input object for the Choreo and set credential! $inputs = $choreo ->newInputs();! $inputs->setCredential(’FlickrOAuthCredential');! ! // Set inputs! $inputs->setText("Yac2013");! ! // Execute Choreo and get results! $results = $choreo->execute($inputs)->getResults();!
  • 32. COPYRIGHT TEMBOO 2013 Temboo !  Search Dropbox (PHP) $session = new Temboo_Session('matthew', ’myApp', ’demo');! ! // Instantiate the Choreo! $choreo = new Dropbox_FilesAndMetadata_SearchFilesAndFolders($session);! ! // Get an input object for the Choreo and set credential! $inputs = $choreo ->newInputs();! $inputs->setCredential(’DropboxOAuthCredential');! ! // Set inputs! $inputs->setQuery("Yac2013");! ! // Execute Choreo and get results! $results = $choreo->execute($inputs)->getResults();!
  • 33. COPYRIGHT TEMBOO 2013 Temboo !  Search Dropbox (PHP) $session = new Temboo_Session('matthew', ’myApp', ’demo');! ! // Instantiate the Choreo! $choreo = new Dropbox_FilesAndMetadata_SearchFilesAndFolders($session);! ! // Get an input object for the Choreo and set credential! $inputs = $choreo ->newInputs();! $inputs->setCredential(’DropboxOAuthCredential');! ! // Set inputs! $inputs->setQuery("Yac2013");! ! // Execute Choreo and get results! $results = $choreo->execute($inputs)->getResults();!
  • 34. COPYRIGHT TEMBOO 2013 Temboo !  Search Foursquare (PHP) $session = new Temboo_Session('matthew', ’myApp', ’demo');! ! // Instantiate the Choreo! $choreo = new Foursquare_Venues_SearchVenues($session);! ! // Get an input object for the Choreo and set credential! $inputs = $choreo ->newInputs();! $inputs->setCredential(’FoursquareOAuthCredential');! ! $inputs->setLatitude("40.7186300");! $inputs->setLongitude("-74.055840");! ! // Execute Choreo and get results! $results = $choreo->execute($inputs)->getResults();!
  • 35. COPYRIGHT TEMBOO 2013 Temboo Choreography Metadata PHP template Node.js template Ruby template iOS template Python template Java template cURL template Arduino template
  • 36. COPYRIGHT TEMBOO 2013 Temboo Choreography Metadata PHP template Node.js template Ruby template iOS template Python template Java template cURL template Arduino template Patch
  • 37. COPYRIGHT TEMBOO 2013 Automation will transform APIs !  Code generation + frameworks !  Increasing standardization !  Decreasing friction !  An exciting time to be a developer