SlideShare a Scribd company logo
1 of 67
A Great API is Hard to Find

       Dan Diephouse
         MuleSoft
         @dandiep
About Me
About MuleSoft
• Connect anything to
  everything!
• Publish APIs
• Mediate services
• Integrate applications
• Load data
• Over 100K dev
  community
• 3200+ production
  deployments
The Impact of APIs
API Proliferation
                                                      9000




                                               4676



                                     2647

                              1628
                       1116
                601
       352
105

2005   2006     2007   2008   2009   2010     2011    2012

                                            Source: Programmable Web
API Billionaires Club 2011




                                     Source: Programmable Web
All contents Copyright ©
                             6
2011, MuleSoft Inc.
The traditional 3-tier architecture

                               Client

                HTML


          Presentation Tier
                              App Server
            Middle Tier



                              Database
              Data Tier


                                           7
…is being decomposed

Presentation Tier           Presentation Tier    Client


   JSON / XML                   JSON / XML


                Middle Tier                     Server




                                                 Data
 database           Data Tier


                                                          8
…is being decomposed

Presentation Tier    Presentation Tier   3rd party Apps    Client

   JSON / XML            JSON / XML       JSON / XML



                     Middle Tier                          Server




                                                           Data
 database              Data Tier


                                                              9
…is being decomposed

Presentation Tier                       Presentation Tier               3rd party Apps    Client

   JSON / XML                               JSON / XML                   JSON / XML



                                        Middle Tier                                      Server



                                          API      API      API
                                API                               API
                            SaaS, Infrastructure Services,                                Data
 database
                    API
                                  Social Media APIs        API             Data Tier
                          API                            API
                                  API              API
                                             API

                                                                                            10
Platform Shift
Traditional Application Environments


         Application

       Web/App Server
          Database
      Operating System
Platform Shift
New Application Environments


        Application      Application

      Web/App Server        PaaS
         Database
                            IaaS
      Operating System
Technology Shift
Traditional Application Environments

                        Application
    Application
                                 UI




                                            Security
     Database
                           Business Logic
    Web Server
  Operating System              Data
Technology Shift
Newer Application Environments

                        Application
    Application




                                              Security
                            UI        API
     Database
                           Business Logic
    Web Server
  Operating System          Data      Integration
Technology Shift
Application Decomposition
Application


                      Security
    UI        API

   Business Logic

    Data      Integration
What APIs are you using?
•   CRM – Salesforce, MS Dynamics, SAP
•   Data services – Xeround, Mongo, RDS
•   eCommerce – PayPal, QuickBooks, Xero, Freshbooks
•   Email – Amazon SES, SendGrid
•   Messaging – PubNub, Cloud AMQP
•   Notifications – Urban Airship, Twilio
•   Security – Katasoft
•   Social – Facebook, Twitter, LinkedIn
•   Storage – S3, DropBox
Changing business models
Build an eco-system of
integrations which
provide more value to                 CRM


your customers            Mobile              ERPs


                                     Your
Plethora of business
models – fremium, pay    eCommerce
                                      API   Marketing

for use, tiers, etc
                                      HRM
GREAT APIS
A GREAT API IS … USER FRIENDLY
What does the user want?


  How do they want it?
Sidebar: REST is awesome!
5 interaction patterns to consider

choose the right one for the job
#1: CRUD + Actions
Create    POST /widgets
 Read     GET /widgets
          GET /widgets?name=Foo
          GET /widgets/123
Update    PUT /widgets/123
 Delete   DELETE /widgets/123
   …
Execute   POST /widgets/123/execute
#2: Batch
 “Web architects must understand that resources
are just consistent mappings from an identifier to
some set of views on server-side state. If one view
doesn’t suit your needs, then feel free to create a
different resource that provides a better view (for
 any definition of “better”). These views need not
 have anything to do with how the information is
stored on the server, or even what kind of state it
       ultimately reflects. It just needs to be
understandable (and actionable) by the recipient.”
                      - Fielding
#2: Batch
  Bulk Load      POST /jobs
                 * , widget1 -, ,widget2-, … +

                 200 OK
                 Location /jobs/123

Get Job Status   GET /jobs/123

                 [ status1, status2, status3, etc ]
#3: Streaming


             Long poll
Client                      API
             Async events
#4:
• Instant notification for the web!
• Example:
  – Client creates an invoice
  – Freshbooks calls HTTP webhook to synchronize
    invoice to Salesforce
#5: Async
1. Send message

  POST /messages
  { … }

 201 Received
 Location /messages/123

2. Check Status

  GET /messages/123
A GREAT API IS … CORRECT*




* Except when it shouldn’t be
Partial responses
  Dates & Timezones
                            Hypertext
     Stateful
            Details matter
Error 500       Content-Types

                      GET       Pagination
   Data modeling
Data Types
OrganizationServiceStub.AttributeCollection updateCollection =
  new OrganizationServiceStub.AttributeCollection();

OrganizationServiceStub.KeyValuePairOfstringanyType telephone =
 new OrganizationServiceStub.KeyValuePairOfstringanyType();
telephone.setKey("telephone1");
telephone.setValue("425-555-1212");

updateCollection.addKeyValuePairOfstringanyType(telephone);
Dates
{
    createdAt : 124059811
    …
}
Dates
{
    createdAt : “2008-03-01T13:00:00Z”
    …
}
GET
GET /api/contacts/delete

200 OK
GET
DELETE /api/contacts/123

200 OK
Hypertext
GET /api/contacts

200 OK
[
  {
  “id” : “123”
  }
]
Hypertext
GET /api/contacts

200 OK
[
 {
   “href” : “/api/contacts/123”
   “pictureHref” : “/api/contacts/123/johndoe.jpg”
 }
]
A GREAT API IS … SECURE

• A GREAT API IS…SECURE
Do you think you’re special?
“Special” Companies           Normal Companies
• Microsoft (WS-              • Salesforce (OAuth 2 or Basic
  Security/Policy + Live ID     Auth*)
  variant)                    • Twitter (OAuth 1)
• QuickBooks (SAML/OAuth      • Facebook (OAuth 2)
  variation)
• AWS (Custom encryption)
Basic Auth + SSL
• Easy
• Accessible
• Not great for public APIs…
OAuth!
• 1.0: out of band tokens
• 2.0:
  – 2 legged authentication
  – No more encryption of tokens
  – Short lived tokens with expiration & refresh
  – Grant types
WS-Security
A GREAT API IS … DOCUMENTED
• TODO: screenshots
  – Amazon
• Magento
• Apiary
A GREAT API IS … VERSIONED
POST /api/v1/foo
POST /api/1.0/foo
POST /api/2012-01-01/foo
POST /api/foo?v=2012-01-01
POST /api/foo
Version: 1.0
POST /api/foo
Content-Type: application/vnd.foo+json;v=1.0
Things to consider
•   Include versioning from the start
•   How long should you maintain versions?
•   How often will you make changes?
•   Will you have minor versions?
•   Date based?
Which approach
Header                         URL
• Potentially more “correct”   • Easier to hack in the
  HATEOS approach                browser & with curl
                               • Provides clarity when there
                                 are structural changes
                                  – e.g. it’s clear that resource
                                    /foo went away in version 2
A GREAT API … FAILS GRACEFULLY
A great error has
1. A machine understandable HTTP status code
2. An end user message
3. If relevant, details for the developer to
   escalate the issue (tracking #)
POST /foo
{ … bad data … }

200 OK
{
  “message” : “Invalid request”
}
POST /foo
{ … bad data … }

400 Bad Request
Content-Length: 0
Good
POST /foo
{ … bad data … }

400 Bad Request
{
  “message” : “The field foo123
is not allowed on the request.”
}
Good
POST /contacts
{ “name” : “Dan Diephouse” }

409 Contact Exists
{
  “message” : “A contact with
that name already exists.”
}
Good
POST /contacts
{ “name” : “Dan Diephouse” }

500 Error
{
  “message” : “We were not able to process
you’re request due to an unexpected error.
Please contact support for help in resolving
this request (Request ID 19022334).”
  “requestId” : 19022334
  “time” : “2012-03-01T13:00:00Z”
}
A Great API
•   User friendly
•   “Correct”
•   Secure
•   Documented
•   Versioned
•   Fails Gracefully
Questions?

         @dandiep
dan.diephouse@mulesoft.com

More Related Content

What's hot

Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7WSO2
 
Android SharePoint
Android SharePointAndroid SharePoint
Android SharePointBenCox35
 
Essential API Facade Patterns: Session Management (Episode 2)
Essential API Facade Patterns: Session Management (Episode 2)Essential API Facade Patterns: Session Management (Episode 2)
Essential API Facade Patterns: Session Management (Episode 2)Apigee | Google Cloud
 
Advanced Federation and Web Services in Aras for Enterprise PLM
Advanced Federation and Web Services in Aras for Enterprise PLMAdvanced Federation and Web Services in Aras for Enterprise PLM
Advanced Federation and Web Services in Aras for Enterprise PLMAras
 
Cloud Side: REST APIs - Best practices
Cloud Side: REST APIs - Best practicesCloud Side: REST APIs - Best practices
Cloud Side: REST APIs - Best practicesNicolas FOATA
 
Special Purpose Role-Based Clients for PLM using Aras
Special Purpose Role-Based Clients for PLM using ArasSpecial Purpose Role-Based Clients for PLM using Aras
Special Purpose Role-Based Clients for PLM using ArasAras
 
OOW09 Integration Architecture EBS R12
OOW09 Integration Architecture  EBS R12OOW09 Integration Architecture  EBS R12
OOW09 Integration Architecture EBS R12jucaab
 
CANARIE - What Do I Need to Connect with eduroam and Shibboleth
CANARIE - What Do I Need to Connect with eduroam and ShibbolethCANARIE - What Do I Need to Connect with eduroam and Shibboleth
CANARIE - What Do I Need to Connect with eduroam and ShibbolethChris Phillips
 
Competitive Analysis w SWOT Matrix
Competitive Analysis w SWOT MatrixCompetitive Analysis w SWOT Matrix
Competitive Analysis w SWOT MatrixDavid Castro
 
Df09 Complex Integration In Your Contact Centre Dreamforce Session
Df09 Complex Integration In Your Contact Centre Dreamforce SessionDf09 Complex Integration In Your Contact Centre Dreamforce Session
Df09 Complex Integration In Your Contact Centre Dreamforce SessionStuart Bernstein
 
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)Apigee | Google Cloud
 
The API Facade Pattern: Overview - Episode 1
The API Facade Pattern: Overview - Episode 1The API Facade Pattern: Overview - Episode 1
The API Facade Pattern: Overview - Episode 1Apigee | Google Cloud
 
Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Lucas Jellema
 
Oracle UCM Implementation Patterns
Oracle UCM Implementation PatternsOracle UCM Implementation Patterns
Oracle UCM Implementation PatternsBrian Huff
 
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech TalksDeep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech TalksAmazon Web Services
 
Working with Data and Web Services in Microsoft Silverlight 2
Working with Data and Web Services in Microsoft Silverlight 2Working with Data and Web Services in Microsoft Silverlight 2
Working with Data and Web Services in Microsoft Silverlight 2goodfriday
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用javabloger
 
(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive
(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive
(ATS3-GS03) Accelrys Enterprise Platform Deeper DiveBIOVIA
 

What's hot (20)

Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7Integrating with SAP FIX and HL7
Integrating with SAP FIX and HL7
 
Android SharePoint
Android SharePointAndroid SharePoint
Android SharePoint
 
Essential API Facade Patterns: Session Management (Episode 2)
Essential API Facade Patterns: Session Management (Episode 2)Essential API Facade Patterns: Session Management (Episode 2)
Essential API Facade Patterns: Session Management (Episode 2)
 
Advanced Federation and Web Services in Aras for Enterprise PLM
Advanced Federation and Web Services in Aras for Enterprise PLMAdvanced Federation and Web Services in Aras for Enterprise PLM
Advanced Federation and Web Services in Aras for Enterprise PLM
 
Cloud Side: REST APIs - Best practices
Cloud Side: REST APIs - Best practicesCloud Side: REST APIs - Best practices
Cloud Side: REST APIs - Best practices
 
Intro to Force.com Webinar presentation
Intro to Force.com Webinar presentationIntro to Force.com Webinar presentation
Intro to Force.com Webinar presentation
 
Special Purpose Role-Based Clients for PLM using Aras
Special Purpose Role-Based Clients for PLM using ArasSpecial Purpose Role-Based Clients for PLM using Aras
Special Purpose Role-Based Clients for PLM using Aras
 
OOW09 Integration Architecture EBS R12
OOW09 Integration Architecture  EBS R12OOW09 Integration Architecture  EBS R12
OOW09 Integration Architecture EBS R12
 
CANARIE - What Do I Need to Connect with eduroam and Shibboleth
CANARIE - What Do I Need to Connect with eduroam and ShibbolethCANARIE - What Do I Need to Connect with eduroam and Shibboleth
CANARIE - What Do I Need to Connect with eduroam and Shibboleth
 
Competitive Analysis w SWOT Matrix
Competitive Analysis w SWOT MatrixCompetitive Analysis w SWOT Matrix
Competitive Analysis w SWOT Matrix
 
Df09 Complex Integration In Your Contact Centre Dreamforce Session
Df09 Complex Integration In Your Contact Centre Dreamforce SessionDf09 Complex Integration In Your Contact Centre Dreamforce Session
Df09 Complex Integration In Your Contact Centre Dreamforce Session
 
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
Essential API Facade Patterns: One Phase to Two Phase Conversion (Episode 3)
 
The API Facade Pattern: Overview - Episode 1
The API Facade Pattern: Overview - Episode 1The API Facade Pattern: Overview - Episode 1
The API Facade Pattern: Overview - Episode 1
 
Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3Report From JavaOne 2009 - part 3
Report From JavaOne 2009 - part 3
 
Oracle UCM Implementation Patterns
Oracle UCM Implementation PatternsOracle UCM Implementation Patterns
Oracle UCM Implementation Patterns
 
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech TalksDeep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
Deep Dive on User Sign-up Sign-in with Amazon Cognito - AWS Online Tech Talks
 
Working with Data and Web Services in Microsoft Silverlight 2
Working with Data and Web Services in Microsoft Silverlight 2Working with Data and Web Services in Microsoft Silverlight 2
Working with Data and Web Services in Microsoft Silverlight 2
 
Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用Jee技术在移动互联网中的应用
Jee技术在移动互联网中的应用
 
Web servicesintegrationwhitepaper
Web servicesintegrationwhitepaperWeb servicesintegrationwhitepaper
Web servicesintegrationwhitepaper
 
(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive
(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive
(ATS3-GS03) Accelrys Enterprise Platform Deeper Dive
 

Viewers also liked

Beta core module 2.4 social v3
Beta core  module 2.4   social v3Beta core  module 2.4   social v3
Beta core module 2.4 social v3billyhomebase
 
CLO 0316 Profile Package
CLO 0316 Profile PackageCLO 0316 Profile Package
CLO 0316 Profile PackageKelly Palmer
 
Beta core module 2.4 social v3
Beta core  module 2.4   social v3Beta core  module 2.4   social v3
Beta core module 2.4 social v3billyhomebase
 
Delivering happiness at work through learning & development
Delivering happiness at work through learning & developmentDelivering happiness at work through learning & development
Delivering happiness at work through learning & developmentKelly Palmer
 
process control instrumentation lab and labview report
process control  instrumentation lab and labview  reportprocess control  instrumentation lab and labview  report
process control instrumentation lab and labview reportHari Krishna
 
Manpower teaching corps milestone 3- power point presentation
Manpower teaching corps milestone 3- power point presentationManpower teaching corps milestone 3- power point presentation
Manpower teaching corps milestone 3- power point presentationchakira77
 
Le applicazioni e i case studies di Icenova Engineering Srl
Le applicazioni e i case studies di Icenova Engineering SrlLe applicazioni e i case studies di Icenova Engineering Srl
Le applicazioni e i case studies di Icenova Engineering SrlIcenova Engineering Srl
 
20120620 presentazione cogenerazione_point
20120620 presentazione cogenerazione_point20120620 presentazione cogenerazione_point
20120620 presentazione cogenerazione_pointIcenova Engineering Srl
 
C_Page-Lee_Summary_CV_-1June2016
C_Page-Lee_Summary_CV_-1June2016C_Page-Lee_Summary_CV_-1June2016
C_Page-Lee_Summary_CV_-1June2016Craig Page-Lee
 
Intervento al Klimaenergy2011 - Prof. Marco Marengo
Intervento al Klimaenergy2011 - Prof. Marco MarengoIntervento al Klimaenergy2011 - Prof. Marco Marengo
Intervento al Klimaenergy2011 - Prof. Marco MarengoIcenova Engineering Srl
 
Laporan bioremediasi
Laporan bioremediasiLaporan bioremediasi
Laporan bioremediasidaeyah
 
Latihan diet seimbang
Latihan diet seimbangLatihan diet seimbang
Latihan diet seimbangnikbaharbp
 

Viewers also liked (20)

Beta core module 2.4 social v3
Beta core  module 2.4   social v3Beta core  module 2.4   social v3
Beta core module 2.4 social v3
 
CLO 0316 Profile Package
CLO 0316 Profile PackageCLO 0316 Profile Package
CLO 0316 Profile Package
 
Beta core module 2.4 social v3
Beta core  module 2.4   social v3Beta core  module 2.4   social v3
Beta core module 2.4 social v3
 
Delivering happiness at work through learning & development
Delivering happiness at work through learning & developmentDelivering happiness at work through learning & development
Delivering happiness at work through learning & development
 
process control instrumentation lab and labview report
process control  instrumentation lab and labview  reportprocess control  instrumentation lab and labview  report
process control instrumentation lab and labview report
 
Diet seimbang
Diet seimbangDiet seimbang
Diet seimbang
 
Eami evaluacion diagnostica_eb
Eami evaluacion diagnostica_ebEami evaluacion diagnostica_eb
Eami evaluacion diagnostica_eb
 
Manpower teaching corps milestone 3- power point presentation
Manpower teaching corps milestone 3- power point presentationManpower teaching corps milestone 3- power point presentation
Manpower teaching corps milestone 3- power point presentation
 
Parques nacionales
Parques nacionalesParques nacionales
Parques nacionales
 
Система управления банком
Система управления банкомСистема управления банком
Система управления банком
 
Project one
Project oneProject one
Project one
 
Le applicazioni e i case studies di Icenova Engineering Srl
Le applicazioni e i case studies di Icenova Engineering SrlLe applicazioni e i case studies di Icenova Engineering Srl
Le applicazioni e i case studies di Icenova Engineering Srl
 
20120620 presentazione cogenerazione_point
20120620 presentazione cogenerazione_point20120620 presentazione cogenerazione_point
20120620 presentazione cogenerazione_point
 
C_Page-Lee_Summary_CV_-1June2016
C_Page-Lee_Summary_CV_-1June2016C_Page-Lee_Summary_CV_-1June2016
C_Page-Lee_Summary_CV_-1June2016
 
Intervento al Klimaenergy2011 - Prof. Marco Marengo
Intervento al Klimaenergy2011 - Prof. Marco MarengoIntervento al Klimaenergy2011 - Prof. Marco Marengo
Intervento al Klimaenergy2011 - Prof. Marco Marengo
 
Eami docentes eb_2017
Eami docentes eb_2017Eami docentes eb_2017
Eami docentes eb_2017
 
Eami ingreso eb_2017_2018
Eami ingreso eb_2017_2018Eami ingreso eb_2017_2018
Eami ingreso eb_2017_2018
 
Laporan bioremediasi
Laporan bioremediasiLaporan bioremediasi
Laporan bioremediasi
 
Latihan diet seimbang
Latihan diet seimbangLatihan diet seimbang
Latihan diet seimbang
 
Ppi doc tecnico_docentes
Ppi doc tecnico_docentesPpi doc tecnico_docentes
Ppi doc tecnico_docentes
 

Similar to A great api is hard to find

Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloudumityalcinalp
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Servicesgoodfriday
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworksukdpe
 
SwiftKnowledge Multitenancy
SwiftKnowledge MultitenancySwiftKnowledge Multitenancy
SwiftKnowledge MultitenancyPivotLogix
 
Cross Platform Mobile Apps with APIs from Qcon San Francisco
Cross Platform Mobile Apps with APIs from Qcon San FranciscoCross Platform Mobile Apps with APIs from Qcon San Francisco
Cross Platform Mobile Apps with APIs from Qcon San FranciscoCA API Management
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack CA API Management
 
Technology Overview
Technology OverviewTechnology Overview
Technology OverviewLiran Zelkha
 
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...rsnarayanan
 
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...Michael Noel
 
Public v1 real world example of azure functions serverless conf london 2016
Public v1 real world example of azure functions serverless conf london 2016 Public v1 real world example of azure functions serverless conf london 2016
Public v1 real world example of azure functions serverless conf london 2016 Yochay Kiriaty
 
Melbourne API Management Seminar
Melbourne API Management SeminarMelbourne API Management Seminar
Melbourne API Management SeminarCA API Management
 
S+S Architecture Overview
S+S Architecture OverviewS+S Architecture Overview
S+S Architecture OverviewDavid Solivan
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...goodfriday
 
SPS- Share Point 2010 and Windows Azure
SPS- Share Point 2010 and Windows AzureSPS- Share Point 2010 and Windows Azure
SPS- Share Point 2010 and Windows AzureShakir Majeed Khan
 
HAD05: Collaborating with Extranet Partners on SharePoint 2010
HAD05: Collaborating with Extranet Partners on SharePoint 2010HAD05: Collaborating with Extranet Partners on SharePoint 2010
HAD05: Collaborating with Extranet Partners on SharePoint 2010Michael Noel
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomQConLondon2008
 
Tech UG - Newcastle 09-17 - logic apps
Tech UG - Newcastle 09-17 -   logic appsTech UG - Newcastle 09-17 -   logic apps
Tech UG - Newcastle 09-17 - logic appsMichael Stephenson
 
The Middleware technology that connects the enterprise
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise Kasun Indrasiri
 

Similar to A great api is hard to find (20)

Development Model for The Cloud
Development Model for The CloudDevelopment Model for The Cloud
Development Model for The Cloud
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns FrameworksMike Taulty MIX10 Silverlight 4 Patterns Frameworks
Mike Taulty MIX10 Silverlight 4 Patterns Frameworks
 
SwiftKnowledge Multitenancy
SwiftKnowledge MultitenancySwiftKnowledge Multitenancy
SwiftKnowledge Multitenancy
 
Cross Platform Mobile Apps with APIs from Qcon San Francisco
Cross Platform Mobile Apps with APIs from Qcon San FranciscoCross Platform Mobile Apps with APIs from Qcon San Francisco
Cross Platform Mobile Apps with APIs from Qcon San Francisco
 
Nuno Godinho
Nuno GodinhoNuno Godinho
Nuno Godinho
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack
 
Technology Overview
Technology OverviewTechnology Overview
Technology Overview
 
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
Silverlight And .Net Ria Services – Building Lob And Business Applications Wi...
 
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...
Collaborating with Extranet Partners on SharePoint 2010 - SharePoint Connecti...
 
Public v1 real world example of azure functions serverless conf london 2016
Public v1 real world example of azure functions serverless conf london 2016 Public v1 real world example of azure functions serverless conf london 2016
Public v1 real world example of azure functions serverless conf london 2016
 
Melbourne API Management Seminar
Melbourne API Management SeminarMelbourne API Management Seminar
Melbourne API Management Seminar
 
S+S Architecture Overview
S+S Architecture OverviewS+S Architecture Overview
S+S Architecture Overview
 
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
NET RIA Services - Building Data-Driven Applications with Microsoft Silverlig...
 
SPS- Share Point 2010 and Windows Azure
SPS- Share Point 2010 and Windows AzureSPS- Share Point 2010 and Windows Azure
SPS- Share Point 2010 and Windows Azure
 
HAD05: Collaborating with Extranet Partners on SharePoint 2010
HAD05: Collaborating with Extranet Partners on SharePoint 2010HAD05: Collaborating with Extranet Partners on SharePoint 2010
HAD05: Collaborating with Extranet Partners on SharePoint 2010
 
Application Services On The Web Sales Forcecom
Application Services On The Web Sales ForcecomApplication Services On The Web Sales Forcecom
Application Services On The Web Sales Forcecom
 
Tech UG - Newcastle 09-17 - logic apps
Tech UG - Newcastle 09-17 -   logic appsTech UG - Newcastle 09-17 -   logic apps
Tech UG - Newcastle 09-17 - logic apps
 
The Middleware technology that connects the enterprise
The Middleware technology that connects the enterpriseThe Middleware technology that connects the enterprise
The Middleware technology that connects the enterprise
 

Recently uploaded

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

A great api is hard to find

Editor's Notes

  1. Thanks for inviting me.Background in integration I live in San FranciscoI love wineI play the accordionI love building products and products need APIs.Currently focused on the problem of connecting everything together – how do we make it as simple as possible? How do we break down cloud silos?
  2. Let’s talk about the impact of APIs and I don’t mean all the schwag we see around this conference. Look around, all these companies are focusing on APIs. It’s not just developers anymore, it’s everyone.How many of you integrate with more than one API?
  3. Center of gravity shifting to the cloudRise of the composite appLess visibility and controlRapid innovation means middleware must adapt and support change
  4. We’ll start around the early 2000s, where the traditional application looked something .HTML rendered by serverData tier maintained by db admins, run on premise
  5. Presentation tier moves to client side – AJAX (Backbone, Ext, Sencha, Jquery, etc) and Mobile (iPhone, Android)Expectation now from consumers that you have a mobile appForces a shift – everything now has a REST API
  6. People DEMAND an API and your business wants to monetize it Look at all the companies here around this…
  7. Correspondingly, you want to use everyone else’s APIsYour application is no longer a database, it’s a composite application based on a number of different infrastructure services, social media APIs, etc
  8. Simultaneously there is a platform shift, we’re moving from the 3 tier server to PaaS and IaaSHow many here deploy their applications on Heroku?
  9. Building it themselves
  10. Data is still important, but integration to external services is becoming just as important. Is all your data in the database? Or do you have it spread out over different services/datastore? There is no one DB to rule them all for example
  11. Building it themselves
  12. Building it themselves
  13. The worst APIs are the ones that were designed without any thought. The ones that just expose whatever at random. They don’t worry about the how and why, but as any user knows, that’s the most important part.
  14. This talk presupposes that REST is the way to go, so I figure I better say a few words on that. I really go to REST+JSON by default. You have to make a strong argument with me to go another way. I’m sure you know by now – REST stands for Representation State transfer. The simple way to explain it is that you have a set of nouns (widgets) and fixed set of verbs. REST has so many good things going for it-it is the language of the webit is scalableit is easy to get started – you just hit the URL in the browser or with Curl. No complicated libraries. You can also take it in pieces. it is universalit is evolvable – we can use URIs and data formats to build up a set of nouns The only thing about REST that is not great is that people easily screw it up. I’m sure people will say the same thing about me – because I’m advocating a kind of REST-lite approach. but as long as you’re concious of the downsides of leaving other stuff behind, you can do it.I think the market is bearing this out as well in terms of what we’re seeing from vendors and the services they produce.
  15. Choose your nouns, not your verbs.For things that don’t fit, then put the action in the URI
  16. A great API supports batch if your users need it. Don’t make people hit your API a million times to import a million rows.While there is also HTTP pipelineing, it has a couple challengeserrors returned in same order, which can add latencynot well supported by client libraries
  17. I call this streaming because this is what Salesforce calls it, but by it I simply mean pub sub over HTTP-It gives up some of the advantages of REST (statefulness), but it gives you real time updates and reduces the # of requests the client needs to make-Difficult to implement for consumers as it’s uncommon-
  18. “so simple you’ll think it’s stupid”
  19. I can’t make you to write beautiful code, but I can try! So I will highlight a few problems if you don’t implement stuff correctly
  20. MS Dynamics CRMno thought to data structuresTried to do a schemaless design in a schema – XML schema just deal well with that. Ended up with Arrayofstringtype and so on-would be better off with a schemaless JSON based design
  21. Timezones!
  22. Timezones!
  23. Make your application hypertext. Then users can browse to different resources
  24. AWS I will give a little bit of slack because pre-date everything – and at least it’s consistent and easy.
  25. OAuth allows you to build an authentication mechanism which allows applications to act, not just usersIt is much more secure for 3rd party applications because you can track turn off access for invididual applications.
  26. If anything use XML encryption. I completely get that there are valid use cases that WS-Security meets that other specs don’t, but crikey, it’s impossible for people to use, so don’t expect your API to catch on with it.