SlideShare a Scribd company logo
> GET /problems/MONEY HTTP/1.1   I	 GOT	 99
                                 PROBLEMS
> Host: localhost
> Accept: */*

< HTTP/1.1 200 OK




> GET /problems/POWER HTTP/1.1
> Host: localhost
                                 BUT	 REST
                                 AINT	 ONE
> Accept: */*

< HTTP/1.1 200 OK



> GET /problems/REST HTTP/1.1
> Host: localhost
> Accept: */*
                                 @adrianfcole
< HTTP/1.1 404 Not Found
PROBLEMS
          ➡Why API
          ➡ReST vs other HTTP APIs?
          ➡Design Patterns vs Real APIs


we need to define what we are talking about, and then evaluate patterns
WHO	 IS	 THIS	 GUY?
๏ @adrianfcole

๏ architect CloudHub at MuleSoft

๏founder jclouds
THANKS
  ★     api-craft
  ★     mattstep
  ★   gtcampbell
  ★       mulies
WHY	 WE	 API

                                                                 photo copyright 2005 Sony Pictures

Now that we are here, we underscore motivations to even bother with.
COLLABORATE
           GROW	 
           ECOSYSTEM
           AND	 
           INNOVATE
A Web API Study: Hurwitz;
leads to integration -> stronger ecosystem -> more value
 > devices and applications in the ecosystem
HOW	 
         TO	  ReST SOAP
         API
At first glance, we might think how to present an api is rest vs soap
HOW	 
         TO	  ReST WS-*
         API
it might really be the aspects of WS-* that would make such a decision, such as WS-Security,
AtomicTransaction, ReliableMessaging
HOW	 
         TO	  ReST ReST                                                  ish

         API
Say we chose, ReST.. the thing is that ReST means a lot to many people
HOW	 
         TO	  not-soap                                      HATEOAS
         REST
ends up being something between soap and hypertext driven
To	 the	                       Level 0:
                                     Level 1:
                                                Swamp of POX
                                                Resources
      glory	                         Level 2:
                                     Level 3:
                                                Verbs
                                                Hypermedia

      of	 
      REST
Leonard Richardson circa 2008 Maturity Model
> POST /api HTTP/1.1
                                                  > <SOAP-ENV:Envelope ...>
                                                    <SOAP-ENV:Body>
                                                      <m:getAvailableDataSources xmlns:m="




       Swamp	 
                                                        <group xsi:type="xsd:string">ArcWe
                                                        <service xsi:type="xsd:string">Map
                                                        <token xsi:type="xsd:string">MyTok
                                                      </m:getAvailableDataSources>




       of	 POX
                                                    </SOAP-ENV:Body>
                                                  </SOAP-ENV:Envelope>

                                                  < HTTP/1.1 200 OK
                                                  < <?xml version="1.0" encoding="UTF-8"?>
                                                  <soap:Envelope ...>
                                                    <soap:Body>
                                                      <n:getAvailableDataSourcesResponse x
                                                        <Result href="#id0"/>
                                                      </n:getAvailableDataSourcesResponse>
      All things go over the                          <id0 id="id0" soapenc:root="0" xsi:t
                                                  soapenc:arrayType="ns5:DataSource[21]">
      same endpoint as XML                              <i href="#id1"/>
                                                  --snip--




Easiest example of POX is tunneling commands over a single http request/response paradigm
RESOURCES
   > GET https://ec2.amazonaws.com/?Action=DeleteVolume&VolumeId=vol-4282672b HTTP/1.1

   < HTTP/1.1 200 OK

   <DeleteVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2012-08-15/">
     <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId>
     <return>true</return>
   </DeleteVolumeResponse>

      --snip--

                            Many URIs, same HTTP method
                             Side-effects are API-specific

many uris, but a single invocation method. operations might be encoded in parameters, and
resource might be mixed in with them
VERBS
                      > HEAD https://mybucket.s3.amazonaws.com/ HTTP/1.1

                      < HTTP/1.1 200 OK




               HTTP verbs mean more than CRUD
                  Status codes are meaningful

HEAD is metadata; PATCH is for update; PUT is replace; POST -> RPC/create
atomicity underpins idempotence; by spec POST can affect multiple resources, but most
others (except notably trace,options) only apply to the resource identified by the href
HYPERMEDIA
    > GET https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f-9dd4e03546
    > Accept: application/vnd.vmware.vcloud.catalogItem+xml

    < HTTP/1.1 200 OK
    < Content-Type: application/vnd.vmware.vcloud.catalogItem+xml;version=1.0

    <CatalogItem xmlns="http://www.vmware.com/vcloud/v1" name="mycatalog" type="
                 href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a5
        <Link rel="up" type="application/vnd.vmware.vcloud.catalog+xml"
              href="https://vcloud/api/v1.0/catalog/7f192dfe-00d1-42f2-9f76-9360
        <Link rel="edit" type="application/vnd.vmware.vcloud.catalogItem+xml"
              href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f-
        <Link rel="remove"
             href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f-9
    --snip--




Discoverability, Self-documenting
abort

                                                                             add

                                                                             alternate

                                                                             disk:attach




          TRANSITIONS                                                        edit

                                                                             remove

                                                                             task




     All	 transitions	 are	 discoverable	 via	 links

HATEOAS is basically a state machine. Your responsibility is to not attempt any transition
undefined in links
CONTENT	 
       NEGOTIATION
        ➡           Client supplies representation in
                   Accept header
               ➡On change, update mediatype
                   name or annotate via ;version=N.N
               ➡On overhaul, bump global version
              Accept: application/vnd.VENDOR.PRODUCT.RESOURCE+xml


New resources types can be added without breaking client, as can new fields/links
Source: Dan Feist
ELEGENT
clients always
know transitions

self-documenting
                   LETS	 USE
and discoverable

version at
                   HATEOAS
media-type
granularity
Perceived	 
      Complexity?


sometimes domain models are well defined, so the added value may be lost on the user
Level	 2	 
          optimizes	 
          for                Coarse Grained Versions
                             CRUD++
                             Limited Representations
                             Today’s Tools
                             Simplicity over Elegance




Leonard Richardson circa 2008 Maturity Model
IS	 IT	 ALL	 
      JUST	 
      PRICKLES	 
      &	 GOO?

Prickles & Goo: Alan Watts Trey Parker Matt Stone
Is culture behind adoption of a particular rest approach? Even if the approach is correct, can
you persuade devs to adopt something they don’t want?
KNOW
	 	 What	 
you	 need
     	 	 Who	 its	 
     for
GOOD	 API	 DESIGNERS	 
UNDERSTAND
       how it is used, and who will use it

       importance of iterations and feedback

       impacts to design beyond development




database details such as pagination, etc

transition to a design that isn’t rest (aws)
TWITTER	 IS	 NOT	 
   HATEOAS
            REST
            SEARCH
            STREAM
original has been around since 2008, latest update mainly addressed oauth and rate limiting
changes; thanks Greg Campbell for insight; api is versioned as 1.1, but includes 3 distinct
apis
aside: search can be modeled in HATEOAS, where POST is creation of search results, HEAD
returns lifespan, etc
AWS	 IS	 NOT	 REST	 
   AWS	 IS	 GOOD
   api designed to parse quickly

   simple extension (add new key)

   consistent security model



Many amazon web services do not even follow type 2 classifications, yet they are widely
adopted, and successful.. why is that? why do they not use rest?

gurupa is the amazon http server, which is tuned for query parsing. language for extending it
is simple (add a key), so parsing it to verify signature is just sort the keys and sign it.
WebSockets	 
                    	 
          is	 not	                    Handshake is HTTPish
                                      Discoverable like ReST
          even                        Full-Duplex
          HTTP!                       Uncode or Binary Messages
                                      TCP Protocol



Ex. ELB you have to use TCP/SSL as this is not a HTTP compatible protocol
consider impact for example lack of origin IP address, sticky session
new set of gateway products will emerge to support WebSockets
GOOD	 REST	 APIs
    Are consciously designed

    Version at the right scope

    Don’t leak implementation details

    Use auth models relevant to consumer

    Are well documented with examples



database details such as pagination, etc
What	 now?
 ➡join api-craft
 ➡read The REST API Design Handbook
 ➡read Web API Design eBook
 ➡socialize your ideas
       Thank	 you!

More Related Content

PDF
Practical Clojure Programming
PDF
Java Summit Chennai: JAX-RS 2.0
PDF
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
PDF
JCR In 10 Minutes
PDF
Running your Java EE 6 applications in the Cloud
PPTX
Digital Businesses of the Future
PPTX
Guide to Application Performance: Planning to Continued Optimization
PDF
Future of Integration | MuleSoft
Practical Clojure Programming
Java Summit Chennai: JAX-RS 2.0
The Java EE 7 Platform: Productivity & HTML5 at JavaOne Latin America 2012
JCR In 10 Minutes
Running your Java EE 6 applications in the Cloud
Digital Businesses of the Future
Guide to Application Performance: Planning to Continued Optimization
Future of Integration | MuleSoft

Viewers also liked (20)

PDF
Transform Your Business with API-led Connectivity
PDF
Becoming a Connected Insurer With API-led Connectivity
PPTX
The Blueprint for Change: How the Best Are Succeeding in Transformation
PPTX
Microservices on Anypoint Platform
PPTX
Unilever: Driving Integration Speed and Agility - Frank Brandes, Director of ...
PDF
Dc meetup-pure-api-led-connectivity-16x9
PPTX
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
PPTX
The Future of B2B: Applying API-Led Connectivity to B2B/EDI - Eric Rempel, CI...
PPTX
Microservices Best Practices
PDF
Application Architecture: The Next Wave | MuleSoft
PDF
Welcome to the API Economy: Developing Your API Strategy
PDF
Innovation In The Era of Cloud Applications and Services
PDF
APIs in a .NET World
PPT
Investor Presentation
PDF
Digital Transformation in a World of Connected Devices
PDF
Creating Restful Web Services with restish
PDF
CIO Panel: Digital Transformation to Achieve Speed and Control
PDF
Launch Mobile Applications with Speed While Maintaining Control
PDF
Product Keynote: How to Compete in the API Economy
PPTX
Mule api gateway overview
Transform Your Business with API-led Connectivity
Becoming a Connected Insurer With API-led Connectivity
The Blueprint for Change: How the Best Are Succeeding in Transformation
Microservices on Anypoint Platform
Unilever: Driving Integration Speed and Agility - Frank Brandes, Director of ...
Dc meetup-pure-api-led-connectivity-16x9
How Cisco is Leveraging MuleSoft to Drive Continuous Innovation​ at Enterpris...
The Future of B2B: Applying API-Led Connectivity to B2B/EDI - Eric Rempel, CI...
Microservices Best Practices
Application Architecture: The Next Wave | MuleSoft
Welcome to the API Economy: Developing Your API Strategy
Innovation In The Era of Cloud Applications and Services
APIs in a .NET World
Investor Presentation
Digital Transformation in a World of Connected Devices
Creating Restful Web Services with restish
CIO Panel: Digital Transformation to Achieve Speed and Control
Launch Mobile Applications with Speed While Maintaining Control
Product Keynote: How to Compete in the API Economy
Mule api gateway overview
Ad

Similar to Why Integrate using an API? | MuleSoft (20)

KEY
I got 99 problems, but ReST ain't one
PDF
Introduction to REST and Jersey
PDF
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
PPT
The Evolving Security Environment For Web Services
KEY
CSG 2012
PDF
Rest Vs Soap Yawn2289
PPTX
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
PDF
Ruby Conf Preso
PPTX
ASP.NET WEB API Training
PDF
Spring Ldap
PDF
ReST Vs SOA(P) ... Yawn
PDF
Node.js Build, Deploy and Scale Webinar
KEY
Using and scaling Rack and Rack-based middleware
PDF
Progressive web apps
PDF
Containerizing your Security Operations Center
KEY
Supa fast Ruby + Rails
PPT
eZ Publish REST API v2
PPT
E zsc2012 rest-api-v2
PDF
Rails 2.0 Presentation
PDF
Frequently asked MuleSoft Interview Questions and Answers from Techlightning
I got 99 problems, but ReST ain't one
Introduction to REST and Jersey
REST in ( a mobile ) peace @ WHYMCA 05-21-2011
The Evolving Security Environment For Web Services
CSG 2012
Rest Vs Soap Yawn2289
Deploy and Destroy: Testing Environments - Michael Arenzon - DevOpsDays Tel A...
Ruby Conf Preso
ASP.NET WEB API Training
Spring Ldap
ReST Vs SOA(P) ... Yawn
Node.js Build, Deploy and Scale Webinar
Using and scaling Rack and Rack-based middleware
Progressive web apps
Containerizing your Security Operations Center
Supa fast Ruby + Rails
eZ Publish REST API v2
E zsc2012 rest-api-v2
Rails 2.0 Presentation
Frequently asked MuleSoft Interview Questions and Answers from Techlightning
Ad

More from MuleSoft (20)

PPTX
The CIO's Guide to Digital Transformation
PPTX
Gluecon 2017: Metadata is the Glue
PDF
Gluecon 2017: API Modelling Framework - A Toolbox for Interacting With API S...
PPTX
How to Get Unstuck
PPTX
Product Vision and Roadmap for Anypoint Platform
PPTX
How API Enablement Drives Legacy Modernization
PPTX
Microservices on Anypoint Platform
PPTX
Applying UX principles and methods to APIs
PPTX
Secure by design: Scaling security across the enterprise
PPTX
Gathering Operational Intelligence in Complex Environments at Splunk
PPTX
CloudHub and other Cloud Deployment Options
PPTX
Governing and Sharing your Integration Assets
PPTX
MuleSoft's Approach to Driving Customer Outcomes
PPTX
Designing and building Mule applications
PPTX
Object Store
PPTX
Introducing Anypoint Exchange 2.0
PDF
Troubleshooting Anypoint Platform
PPTX
Relevancy in a Rapidly Changing World (Yvonne Wassenaar)
PPTX
Leveraging APIs and the Cloud to Transform Veteran Care (Steve Rushing)
PPTX
Role of Technology in the Evolution of P&C Insurance (Marcus Ryu)
The CIO's Guide to Digital Transformation
Gluecon 2017: Metadata is the Glue
Gluecon 2017: API Modelling Framework - A Toolbox for Interacting With API S...
How to Get Unstuck
Product Vision and Roadmap for Anypoint Platform
How API Enablement Drives Legacy Modernization
Microservices on Anypoint Platform
Applying UX principles and methods to APIs
Secure by design: Scaling security across the enterprise
Gathering Operational Intelligence in Complex Environments at Splunk
CloudHub and other Cloud Deployment Options
Governing and Sharing your Integration Assets
MuleSoft's Approach to Driving Customer Outcomes
Designing and building Mule applications
Object Store
Introducing Anypoint Exchange 2.0
Troubleshooting Anypoint Platform
Relevancy in a Rapidly Changing World (Yvonne Wassenaar)
Leveraging APIs and the Cloud to Transform Veteran Care (Steve Rushing)
Role of Technology in the Evolution of P&C Insurance (Marcus Ryu)

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
Approach and Philosophy of On baking technology
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PPTX
Tartificialntelligence_presentation.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Machine Learning_overview_presentation.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
cuic standard and advanced reporting.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
Empathic Computing: Creating Shared Understanding
NewMind AI Weekly Chronicles - August'25-Week II
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Getting Started with Data Integration: FME Form 101
Approach and Philosophy of On baking technology
Group 1 Presentation -Planning and Decision Making .pptx
Tartificialntelligence_presentation.pptx
Programs and apps: productivity, graphics, security and other tools
A comparative analysis of optical character recognition models for extracting...
Big Data Technologies - Introduction.pptx
Machine Learning_overview_presentation.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
cuic standard and advanced reporting.pdf
Spectroscopy.pptx food analysis technology
Network Security Unit 5.pdf for BCA BBA.
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
MYSQL Presentation for SQL database connectivity
Dropbox Q2 2025 Financial Results & Investor Presentation
Advanced methodologies resolving dimensionality complications for autism neur...

Why Integrate using an API? | MuleSoft

  • 1. > GET /problems/MONEY HTTP/1.1 I GOT 99 PROBLEMS > Host: localhost > Accept: */* < HTTP/1.1 200 OK > GET /problems/POWER HTTP/1.1 > Host: localhost BUT REST AINT ONE > Accept: */* < HTTP/1.1 200 OK > GET /problems/REST HTTP/1.1 > Host: localhost > Accept: */* @adrianfcole < HTTP/1.1 404 Not Found
  • 2. PROBLEMS ➡Why API ➡ReST vs other HTTP APIs? ➡Design Patterns vs Real APIs we need to define what we are talking about, and then evaluate patterns
  • 3. WHO IS THIS GUY? ๏ @adrianfcole ๏ architect CloudHub at MuleSoft ๏founder jclouds
  • 4. THANKS ★ api-craft ★ mattstep ★ gtcampbell ★ mulies
  • 5. WHY WE API photo copyright 2005 Sony Pictures Now that we are here, we underscore motivations to even bother with.
  • 6. COLLABORATE GROW ECOSYSTEM AND INNOVATE A Web API Study: Hurwitz; leads to integration -> stronger ecosystem -> more value > devices and applications in the ecosystem
  • 7. HOW TO ReST SOAP API At first glance, we might think how to present an api is rest vs soap
  • 8. HOW TO ReST WS-* API it might really be the aspects of WS-* that would make such a decision, such as WS-Security, AtomicTransaction, ReliableMessaging
  • 9. HOW TO ReST ReST ish API Say we chose, ReST.. the thing is that ReST means a lot to many people
  • 10. HOW TO not-soap HATEOAS REST ends up being something between soap and hypertext driven
  • 11. To the Level 0: Level 1: Swamp of POX Resources glory Level 2: Level 3: Verbs Hypermedia of REST Leonard Richardson circa 2008 Maturity Model
  • 12. > POST /api HTTP/1.1 > <SOAP-ENV:Envelope ...> <SOAP-ENV:Body> <m:getAvailableDataSources xmlns:m=" Swamp <group xsi:type="xsd:string">ArcWe <service xsi:type="xsd:string">Map <token xsi:type="xsd:string">MyTok </m:getAvailableDataSources> of POX </SOAP-ENV:Body> </SOAP-ENV:Envelope> < HTTP/1.1 200 OK < <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope ...> <soap:Body> <n:getAvailableDataSourcesResponse x <Result href="#id0"/> </n:getAvailableDataSourcesResponse> All things go over the <id0 id="id0" soapenc:root="0" xsi:t soapenc:arrayType="ns5:DataSource[21]"> same endpoint as XML <i href="#id1"/> --snip-- Easiest example of POX is tunneling commands over a single http request/response paradigm
  • 13. RESOURCES > GET https://ec2.amazonaws.com/?Action=DeleteVolume&VolumeId=vol-4282672b HTTP/1.1 < HTTP/1.1 200 OK <DeleteVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2012-08-15/"> <requestId>59dbff89-35bd-4eac-99ed-be587EXAMPLE</requestId> <return>true</return> </DeleteVolumeResponse> --snip-- Many URIs, same HTTP method Side-effects are API-specific many uris, but a single invocation method. operations might be encoded in parameters, and resource might be mixed in with them
  • 14. VERBS > HEAD https://mybucket.s3.amazonaws.com/ HTTP/1.1 < HTTP/1.1 200 OK HTTP verbs mean more than CRUD Status codes are meaningful HEAD is metadata; PATCH is for update; PUT is replace; POST -> RPC/create atomicity underpins idempotence; by spec POST can affect multiple resources, but most others (except notably trace,options) only apply to the resource identified by the href
  • 15. HYPERMEDIA > GET https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f-9dd4e03546 > Accept: application/vnd.vmware.vcloud.catalogItem+xml < HTTP/1.1 200 OK < Content-Type: application/vnd.vmware.vcloud.catalogItem+xml;version=1.0 <CatalogItem xmlns="http://www.vmware.com/vcloud/v1" name="mycatalog" type=" href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a5 <Link rel="up" type="application/vnd.vmware.vcloud.catalog+xml" href="https://vcloud/api/v1.0/catalog/7f192dfe-00d1-42f2-9f76-9360 <Link rel="edit" type="application/vnd.vmware.vcloud.catalogItem+xml" href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f- <Link rel="remove" href="https://vcloud/api/v1.0/catalogItem/1c01defe-1111-42ac-a50f-9 --snip-- Discoverability, Self-documenting
  • 16. abort add alternate disk:attach TRANSITIONS edit remove task All transitions are discoverable via links HATEOAS is basically a state machine. Your responsibility is to not attempt any transition undefined in links
  • 17. CONTENT NEGOTIATION ➡ Client supplies representation in Accept header ➡On change, update mediatype name or annotate via ;version=N.N ➡On overhaul, bump global version Accept: application/vnd.VENDOR.PRODUCT.RESOURCE+xml New resources types can be added without breaking client, as can new fields/links Source: Dan Feist
  • 18. ELEGENT clients always know transitions self-documenting LETS USE and discoverable version at HATEOAS media-type granularity
  • 19. Perceived Complexity? sometimes domain models are well defined, so the added value may be lost on the user
  • 20. Level 2 optimizes for Coarse Grained Versions CRUD++ Limited Representations Today’s Tools Simplicity over Elegance Leonard Richardson circa 2008 Maturity Model
  • 21. IS IT ALL JUST PRICKLES & GOO? Prickles & Goo: Alan Watts Trey Parker Matt Stone Is culture behind adoption of a particular rest approach? Even if the approach is correct, can you persuade devs to adopt something they don’t want?
  • 22. KNOW What you need Who its for
  • 23. GOOD API DESIGNERS UNDERSTAND how it is used, and who will use it importance of iterations and feedback impacts to design beyond development database details such as pagination, etc transition to a design that isn’t rest (aws)
  • 24. TWITTER IS NOT HATEOAS REST SEARCH STREAM original has been around since 2008, latest update mainly addressed oauth and rate limiting changes; thanks Greg Campbell for insight; api is versioned as 1.1, but includes 3 distinct apis aside: search can be modeled in HATEOAS, where POST is creation of search results, HEAD returns lifespan, etc
  • 25. AWS IS NOT REST AWS IS GOOD api designed to parse quickly simple extension (add new key) consistent security model Many amazon web services do not even follow type 2 classifications, yet they are widely adopted, and successful.. why is that? why do they not use rest? gurupa is the amazon http server, which is tuned for query parsing. language for extending it is simple (add a key), so parsing it to verify signature is just sort the keys and sign it.
  • 26. WebSockets is not Handshake is HTTPish Discoverable like ReST even Full-Duplex HTTP! Uncode or Binary Messages TCP Protocol Ex. ELB you have to use TCP/SSL as this is not a HTTP compatible protocol consider impact for example lack of origin IP address, sticky session new set of gateway products will emerge to support WebSockets
  • 27. GOOD REST APIs Are consciously designed Version at the right scope Don’t leak implementation details Use auth models relevant to consumer Are well documented with examples database details such as pagination, etc
  • 28. What now? ➡join api-craft ➡read The REST API Design Handbook ➡read Web API Design eBook ➡socialize your ideas Thank you!