SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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)
Enter the app era with ruby on rails (rubyday)
Matteo Collina
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13
Stephan HochdĂśrfer
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & Compression
Paul Irish
 
Enter the app era with ruby on rails
Enter the app era with ruby on railsEnter the app era with ruby on rails
Enter the app era with ruby on rails
Matteo Collina
 
Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13
Stephan HochdĂśrfer
 

Was ist angesagt? (20)

Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
 
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)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
 
A Phing fairy tale - ConFoo13
A Phing fairy tale - ConFoo13A Phing fairy tale - ConFoo13
A Phing fairy tale - ConFoo13
 
Outside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and RspecOutside-in Development with Cucumber and Rspec
Outside-in Development with Cucumber and Rspec
 
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)
Enter the app era with ruby on rails (rubyday)
 
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)
Kicking off with Zend Expressive and Doctrine ORM (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)Dip Your Toes in the Sea of Security (ConFoo YVR 2017)
Dip Your Toes in the Sea of Security (ConFoo YVR 2017)
 
Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)Writing Apps the Google-y Way (Brisbane)
Writing Apps the Google-y Way (Brisbane)
 
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)
Best practices for crafting high quality PHP apps (Bulgaria 2019)
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13Your Business. Your Language. Your Code - dpc13
Your Business. Your Language. Your Code - dpc13
 
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
 
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)
Best practices for crafting high quality PHP apps (php[world] 2019)
 
Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919Childthemes ottawa-word camp-1919
Childthemes ottawa-word camp-1919
 
jQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & CompressionjQuery Anti-Patterns for Performance & Compression
jQuery Anti-Patterns for Performance & Compression
 
Enter the app era with ruby on rails
Enter the app era with ruby on railsEnter the app era with ruby on rails
Enter the app era with ruby on rails
 
RESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an IntroductionRESTFul API Design and Documentation - an Introduction
RESTFul API Design and Documentation - an Introduction
 
Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13Real World Dependency Injection - oscon13
Real World Dependency Injection - oscon13
 
Turn your spaghetti code into ravioli with JavaScript modules
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
 
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)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)
 

Ähnlich wie "Managing API Complexity". Matthew Flaming, Temboo

The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
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 Ferrer
 
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, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...
Jonathan Dahl
 

Ähnlich wie "Managing API Complexity". Matthew Flaming, Temboo (20)

Yahoo is open to developers
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developers
 
Green Light for the Apps with Calaba.sh - DroidCon Paris 2014
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
 
Mashup University 4: Intro To Mashups
Mashup University 4: Intro To MashupsMashup University 4: Intro To Mashups
Mashup University 4: Intro To Mashups
 
Building Better Web APIs with Rails
Building Better Web APIs with RailsBuilding Better Web APIs with Rails
Building Better Web APIs with Rails
 
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 Paris 2019 - API Descriptions as Product Code by Phil Sturgeon, Stopl...
 
API Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIsAPI Workshop: Deep dive into REST APIs
API Workshop: Deep dive into REST APIs
 
Finding things on the web with BOSS
Finding things on the web with BOSSFinding things on the web with BOSS
Finding things on the web with BOSS
 
KazooCon 2014 - Introduction to Kazoo APIs!
KazooCon 2014 - Introduction to Kazoo APIs!KazooCon 2014 - Introduction to Kazoo APIs!
KazooCon 2014 - Introduction to Kazoo APIs!
 
Swift meetup22june2015
Swift meetup22june2015Swift meetup22june2015
Swift meetup22june2015
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
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
 
Developing Brilliant and Powerful APIs in Ruby & Python
Developing Brilliant and Powerful APIs in Ruby & PythonDeveloping Brilliant and Powerful APIs in Ruby & Python
Developing Brilliant and Powerful APIs in Ruby & Python
 
Building mobile apps using Phonegap
Building mobile apps using PhonegapBuilding mobile apps using Phonegap
Building mobile apps using Phonegap
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Dead Simple APIs with OpenAPI
Dead Simple APIs with OpenAPIDead Simple APIs with OpenAPI
Dead Simple APIs with OpenAPI
 
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, ...
Advanced API Design: how an awesome API can help you make friends, get rich, ...
 
AIR & API
AIR & APIAIR & API
AIR & API
 
Open Event API
Open Event APIOpen Event API
Open Event API
 
Plone api
Plone apiPlone api
Plone api
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
 
Google APPs and APIs
Google APPs and APIsGoogle APPs and APIs
Google APPs and APIs
 

Mehr von Yandex

Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Yandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Yandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Yandex
 

Mehr von Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

KĂźrzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

KĂźrzlich hochgeladen (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

"Managing API Complexity". Matthew Flaming, Temboo

  • 1.
  • 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