SlideShare a Scribd company logo
1 of 34
Download to read offline
ReST vs SOA(P)
          yawn ...


          Instead ...
Facts and confused metaphors
  for Understanding ReST
Early Web
• Human edited Files / Document Oriented
  programatic output
• A patchy server opening up access to static
  files
• Massive Upgrade to Human Knowlege,
  Communication, and Transparency
Tech Progress
• CGI Scripts
• Screen scrapping clients
• Spiders, Robots, and Internet Duct-tape
• Dynamic HTML
• XHTML & XML formats
• CSS
Roy T. Fielding


                 Architectural Styles and the
                 Design of Network-based
                 Software Architectures
                      http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm




by Paul Downey
ReST is not

                                                              • A technology
                                                              • A set of standards
                                                              • COTS software
                                                              • A tooth paste
http://www.lostwackys.com/Wacky-Packages/die-cuts/Crust.htm
ReST is
• A series of constraints that defines a
  specific flavor of system architecture
  • Layered
  • Client / Server         Representational
                            e
  • Code on Demand          State
  • Client Cache            Transfer
  • Stateless Server
ReST is Weak
             Poor network latency

   Difficult to identify authoritative response

   Uniform Interfaces degrade performance

Lacks “mandatory extensions” - must understand

  Optimized for course grained transmissions

              Hard to customize
but also
ReST is Dope
 because of

 Low technical barrier to play

      General Interfaces

    Resource Extensibility

      Massively Scalable

  Independent Deployment
UnReST
Lastly in his Thesis Fielding identifies these issues with HTTP


• Cookies - enabled server side session
• Personalization
• Vendor specific extensions
Did the masses listen to academia?
A Common Path
   /Server.do?some=stuff
RPC style      Sessions
XML-RPC         Large Controllers
SOAP        Query String Param mappers
                Form deserializers

Abstract away the network!
A Common Path?
• Focus on APIs, distributed transactions, etc
• Procedural code
• Distributed OOP
                        1992 called,
                        it wants it’s
                          CORBA
                           back ...
http://www.wisconsinhistory.org/whi/fullimage.asp?id=13487




                               RPC usually
                                   fights the web
                                   with Complexity

 ReST Web Services are injected
        into HTTP molds
    with gooey Web2.0 filling
ReSTful Web Services?
          Madge!
 You’re suggesting there’s
 issues with transporting
 all my SOAP traffic over
 POST through one URI?
  Relax, SOAP document literal over HTTP
            is the most popular.

But won’t I lose transport
     independence?
Yes, but if you add using GET, more endpoints,
       etc you can have caching for free!
                                                 via Shannon C. on Flickr
ReST in 90 seconds
• URIs
• Resources
• Representations
• State Transitions
• User agents, intermediaries, and servers
• Uniform Interfaces
Core Concepts




  http://flickr.com/photos/68661927@N00/350737025/in/photostream/
URI
• Everything has a name
• Excel good C3 = B3 * B2
• Outlook bad - No address for “Last email
  from RSDG”
• This presentation is available at
  http://www.slideshare.net/ozten/slideshows
Resources
• Any “Thing” - concept, event, person
• Anything you would want to point too
• Request or Respose = data + metadata in
  an envelope with control data
• Explicit request / response - no hidden
  state
• Easier to load balance
• Easier to troubleshoot
Representations
• A serializable description of a Resource
• Modify resources through representations
• XHTML Microformats
• Industry standard binary formats ( jpg,
  mpg, etc )
• JSON
• XML ( Atom or custom )
• The resource itself for static files
State Transitions
                      Hypermedia as the engine of
•   Links
                            application state
    • link, img, and a tags
• Forms
Links and forms are the hypermedia elements of
XHTML. They create the network effect of the web.

Every resource represents a state in your application.
State transition aren’t hidden behind an API, but are
instead transmitted back in forth in a hypermedia
protocol. Client’s can follow these links and be less
fragile to future changes. RPC usually lacks links and
encourages assumptions about formatting URI or
server states.
Client / Server
• User Agents
 • Web browsers
 • HTTP libraries - libwww, libcurl, etc
• Proxies
• Gateways
• Servers
Uniform Interfaces
HTTP Method   Guarantee    # Of Effects



                                     0
 GET, HEAD       Safe



                                     1
PUT, DELETE   Idempotent



   POST         None                  ???
                           Möbius strip via wikipediajpg
So What?
           Most popular example:

• Stateless Client / Server rules give us
• Client Side Cache
• HTTP 1.1 conditional GET
• Implement Etags, If-Modified-Since
• Real savings time, $, and complexity
Common
Misconceptions
But, Browsers only do
       GET and POST
•   Yep, their horrible ReST clients

•   Web Developers use XMLHttpRequest for
    PUT, DELETE, etc

•   Outside of browser, use HttpClient,
    libwww, or libcurl

•   ReST uniform interface means
    you can tunnel PUT, DELETE
    over POST or write one off Proxy      via cleansweepsupply.com
ReST is just CRUD
     • Sure you can expose           HTTP    SQL     CRUD
                                     POST   INSERT   Create
        DB on web
                                      GET   SELECT   Read
     • Too cute and simple            PUT   UPDATE   Update
        right?                       DELETE DELETE   Delete



It’s about favoring protocols    Refactor design to use
  and resources over APIs.
                                new resources if you run
                                 out of HTTP methods
Example
Requirment: A user can subscribe to an artist feed

ArtistWS.subscribeUserTo( User user, Feed feed )
                                                     POST /subscriptions

                 OR                                     artist=Art.1234
                                                        feed=Feed.2345
                                                           email=false

                                         Location: http://foo.com/subscription/Sub.3456
 Artist - GET, PUT, DELETE
 Feed - GET, PUT, DELETE
 Subscription - GET, POST, PUT, DELETE
 User - GET, POST, PUT, DELETE
We need WSDL for
          ReST
•   Yes, programmers need documentation and a way
    to discover functionality

•   ReST gets for free

    •   Uniform Interface

    •   Transparent data and HTTP tools

    •   Explicit state transitions

    •   Power of XML - XSD, extensibility, etc
• WSDL tries to hide network, parsing and
  formating messages, loose typing
• Often WSDL is an afterthought, a verbose
  format itself, used to generate incredibly
  verbose SOAP payloads - Yeah tools!
• Doesn’t actually solve the really hard
  problems, still need other WS-* specs
  focused on such as transitions or security
• ReST still requires you to document your
  resources, representations, and other highly
  application specific details
• URI, Microformats, XSD, hypermedia, etc let
  ReST clients do this in a lightweight manner
• URITemplates, XHTML 5, etc coming
• besides, WSDL2Foo is bad
WADL

• Don’t agree that WSDL2Foo is bad?
• OKAY, Use WADL
• WSDL like tool
Rare Conceptions
• ReST is nothing more than the web
  circa 2003
• Human and programatic web both
  thrive under ReST constraints
• It’s the Data, not the Source, not the
  API, not the platform
• Mashups and ???   (future emergent techniques)
  are easier with ReST
Surprise, you’re soaking
          in it...
  Everything we do
over HTTP is “ReST”,
  but we can build
 systems that work
with the natural form Call the police! These
     of the web        APIs are a crime!
ReST isn’t your
            solution
•   If your doing sophisticated mission critical
    distributed programming with transactions
    across multiple partners in synergistic fashion

•   Use CORBA, EDI, Stateful protocol, etc

•   Client and server written in Java? Use RMI, Jini,
    etc

•   Invent a new architecture by applying
    constraints to derive a solution that works with
    your problem space ala Chapter 5 of Fielding
Resources



•http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
•http://rest.blueoxen.net/
•http://microapps.org/
•http://bitworking.org/news/
•http://intertwingly.net/blog/
•http://www.tbray.org/ongoing/

More Related Content

What's hot

Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture stylesAraf Karsh Hamid
 
Tool Academy: Web Archiving
Tool Academy: Web ArchivingTool Academy: Web Archiving
Tool Academy: Web Archivingnullhandle
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cachecornelia davis
 
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureWeb Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureToru Kawamura
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?Charlie Gracie
 
10 Typical Java Problems in the Wild
10 Typical Java Problems in the Wild10 Typical Java Problems in the Wild
10 Typical Java Problems in the WildEberhard Wolff
 
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Evan Chan
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
The Next Big Thing: Serverless
The Next Big Thing: ServerlessThe Next Big Thing: Serverless
The Next Big Thing: ServerlessDoug Vanderweide
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the CloudRyan Cuprak
 
Modern web dev_taxonomy
Modern web dev_taxonomyModern web dev_taxonomy
Modern web dev_taxonomykevin_donovan
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Ryan Cuprak
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at ScaleOracle Developers
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applicationsIdo Flatow
 
Stream Collections - Scala Days
Stream Collections - Scala DaysStream Collections - Scala Days
Stream Collections - Scala DaysGreg Silin
 

What's hot (20)

Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
Tool Academy: Web Archiving
Tool Academy: Web ArchivingTool Academy: Web Archiving
Tool Academy: Web Archiving
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
 
Dev Ops without the Ops
Dev Ops without the OpsDev Ops without the Ops
Dev Ops without the Ops
 
Cloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a CacheCloud-native Data: Every Microservice Needs a Cache
Cloud-native Data: Every Microservice Needs a Cache
 
Web Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the futureWeb Clients for Ruby and What they should be in the future
Web Clients for Ruby and What they should be in the future
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
 
10 Typical Java Problems in the Wild
10 Typical Java Problems in the Wild10 Typical Java Problems in the Wild
10 Typical Java Problems in the Wild
 
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
The Next Big Thing: Serverless
The Next Big Thing: ServerlessThe Next Big Thing: Serverless
The Next Big Thing: Serverless
 
Developing in the Cloud
Developing in the CloudDeveloping in the Cloud
Developing in the Cloud
 
Future of Java
Future of JavaFuture of Java
Future of Java
 
Modern web dev_taxonomy
Modern web dev_taxonomyModern web dev_taxonomy
Modern web dev_taxonomy
 
Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]Java script nirvana in netbeans [con5679]
Java script nirvana in netbeans [con5679]
 
Rest overview briefing
Rest  overview briefingRest  overview briefing
Rest overview briefing
 
Delivering Developer Tools at Scale
Delivering Developer Tools at ScaleDelivering Developer Tools at Scale
Delivering Developer Tools at Scale
 
PaaS with Java
PaaS with JavaPaaS with Java
PaaS with Java
 
Production debugging web applications
Production debugging web applicationsProduction debugging web applications
Production debugging web applications
 
Stream Collections - Scala Days
Stream Collections - Scala DaysStream Collections - Scala Days
Stream Collections - Scala Days
 

Viewers also liked

Web of Science: REST or SOAP?
Web of Science: REST or SOAP?Web of Science: REST or SOAP?
Web of Science: REST or SOAP?Duncan Hull
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding RESTNitin Pande
 
Restful User Experience
Restful User ExperienceRestful User Experience
Restful User ExperienceLee Wayne
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical ApproachMadhaiyan Muthu
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServicesPrateek Tandon
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Request Lifecycle im Zend Framework
Request Lifecycle im Zend FrameworkRequest Lifecycle im Zend Framework
Request Lifecycle im Zend FrameworkMayflower GmbH
 
Actors and Threads
Actors and ThreadsActors and Threads
Actors and Threadsmperham
 
Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)Shreeraj Shah
 
Restful webservice
Restful webserviceRestful webservice
Restful webserviceDong Ngoc
 
Introduction to Akka
Introduction to AkkaIntroduction to Akka
Introduction to AkkaJohan Andrén
 
Akka Actor presentation
Akka Actor presentationAkka Actor presentation
Akka Actor presentationGene Chang
 
Introduction to Actor Model and Akka
Introduction to Actor Model and AkkaIntroduction to Actor Model and Akka
Introduction to Actor Model and AkkaYung-Lin Ho
 
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...Chad Lawler
 

Viewers also liked (20)

Web of Science: REST or SOAP?
Web of Science: REST or SOAP?Web of Science: REST or SOAP?
Web of Science: REST or SOAP?
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
Restful User Experience
Restful User ExperienceRestful User Experience
Restful User Experience
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServices
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Web services - REST and SOAP
Web services - REST and SOAPWeb services - REST and SOAP
Web services - REST and SOAP
 
Request Lifecycle im Zend Framework
Request Lifecycle im Zend FrameworkRequest Lifecycle im Zend Framework
Request Lifecycle im Zend Framework
 
Introduction to the Actor Model
Introduction to the Actor ModelIntroduction to the Actor Model
Introduction to the Actor Model
 
Actors and Threads
Actors and ThreadsActors and Threads
Actors and Threads
 
Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)Advanced Web Services Hacking (AusCERT 06)
Advanced Web Services Hacking (AusCERT 06)
 
Restful webservice
Restful webserviceRestful webservice
Restful webservice
 
Introduction to Akka
Introduction to AkkaIntroduction to Akka
Introduction to Akka
 
Akka - A Brief Intro
Akka - A Brief IntroAkka - A Brief Intro
Akka - A Brief Intro
 
Akka Actor presentation
Akka Actor presentationAkka Actor presentation
Akka Actor presentation
 
Introduction to Actor Model and Akka
Introduction to Actor Model and AkkaIntroduction to Actor Model and Akka
Introduction to Actor Model and Akka
 
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...
Cloud Application Rationalization- The Cloud, the Enterprise, and Making the ...
 

Similar to Understanding ReST Early Web Concepts and Confused Metaphors

Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principleelliando dias
 
CouchDB Talk JChris NYC
CouchDB Talk JChris NYCCouchDB Talk JChris NYC
CouchDB Talk JChris NYCChris Anderson
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And SerendipityQConLondon2008
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web ServicesRajarshi Guha
 
A RESTful introduction
A RESTful introductionA RESTful introduction
A RESTful introductionDaniel Toader
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipitydeimos
 
Streamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web FrameworksStreamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web Frameworksguestf7bc30
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesSteve Speicher
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf PresoDan Yoder
 
Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale CatxJim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale Catxdeimos
 
ghfghg
ghfghgghfghg
ghfghghoefo
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
LA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented ArchitectureLA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented ArchitectureDan Yoder
 
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin DunglasINTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglasapidays
 

Similar to Understanding ReST Early Web Concepts and Confused Metaphors (20)

Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
 
Integrating RESTfully
Integrating RESTfullyIntegrating RESTfully
Integrating RESTfully
 
Applications of the REST Principle
Applications of the REST PrincipleApplications of the REST Principle
Applications of the REST Principle
 
CouchDB Talk JChris NYC
CouchDB Talk JChris NYCCouchDB Talk JChris NYC
CouchDB Talk JChris NYC
 
Rest Reuse And Serendipity
Rest Reuse And SerendipityRest Reuse And Serendipity
Rest Reuse And Serendipity
 
Writing & Using Web Services
Writing & Using Web ServicesWriting & Using Web Services
Writing & Using Web Services
 
A RESTful introduction
A RESTful introductionA RESTful introduction
A RESTful introduction
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And SerendipitySteve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipity
 
Streamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web FrameworksStreamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web Frameworks
 
Innovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open InterfacesInnovate2014 Better Integrations Through Open Interfaces
Innovate2014 Better Integrations Through Open Interfaces
 
Ruby Conf Preso
Ruby Conf PresoRuby Conf Preso
Ruby Conf Preso
 
Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale CatxJim Webber A Couple Of Ways To Skin An Internet Scale Catx
Jim Webber A Couple Of Ways To Skin An Internet Scale Catx
 
Qcon
QconQcon
Qcon
 
RESTful OGC Services
RESTful OGC ServicesRESTful OGC Services
RESTful OGC Services
 
ghfghg
ghfghgghfghg
ghfghg
 
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ... The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
LA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented ArchitectureLA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented Architecture
 
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin DunglasINTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
INTERFACE by apidays_Vulcain: beat GraphQL with HTTP/2+ by Kevin Dunglas
 

Recently uploaded

M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.Aaiza Hassan
 
Sales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessSales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessAggregage
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Roomdivyansh0kumar0
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Lviv Startup Club
 
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 DelhiCall Girls in Delhi
 
Best Basmati Rice Manufacturers in India
Best Basmati Rice Manufacturers in IndiaBest Basmati Rice Manufacturers in India
Best Basmati Rice Manufacturers in IndiaShree Krishna Exports
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesDipal Arora
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...lizamodels9
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsMichael W. Hawkins
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in managementchhavia330
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageMatteo Carbone
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear RegressionRavindra Nath Shukla
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...Any kyc Account
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation SlidesKeppelCorporation
 
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...anilsa9823
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Roland Driesen
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayNZSG
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 

Recently uploaded (20)

M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.
 
Sales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for SuccessSales & Marketing Alignment: How to Synergize for Success
Sales & Marketing Alignment: How to Synergize for Success
 
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130  Available With RoomVIP Kolkata Call Girl Howrah 👉 8250192130  Available With Room
VIP Kolkata Call Girl Howrah 👉 8250192130 Available With Room
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
 
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
 
Best Basmati Rice Manufacturers in India
Best Basmati Rice Manufacturers in IndiaBest Basmati Rice Manufacturers in India
Best Basmati Rice Manufacturers in India
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
Nepali Escort Girl Kakori \ 9548273370 Indian Call Girls Service Lucknow ₹,9517
Nepali Escort Girl Kakori \ 9548273370 Indian Call Girls Service Lucknow ₹,9517Nepali Escort Girl Kakori \ 9548273370 Indian Call Girls Service Lucknow ₹,9517
Nepali Escort Girl Kakori \ 9548273370 Indian Call Girls Service Lucknow ₹,9517
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
HONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael HawkinsHONOR Veterans Event Keynote by Michael Hawkins
HONOR Veterans Event Keynote by Michael Hawkins
 
GD Birla and his contribution in management
GD Birla and his contribution in managementGD Birla and his contribution in management
GD Birla and his contribution in management
 
Insurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usageInsurers' journeys to build a mastery in the IoT usage
Insurers' journeys to build a mastery in the IoT usage
 
Regression analysis: Simple Linear Regression Multiple Linear Regression
Regression analysis:  Simple Linear Regression Multiple Linear RegressionRegression analysis:  Simple Linear Regression Multiple Linear Regression
Regression analysis: Simple Linear Regression Multiple Linear Regression
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
 
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
Keppel Ltd. 1Q 2024 Business Update  Presentation SlidesKeppel Ltd. 1Q 2024 Business Update  Presentation Slides
Keppel Ltd. 1Q 2024 Business Update Presentation Slides
 
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
Lucknow 💋 Escorts in Lucknow - 450+ Call Girl Cash Payment 8923113531 Neha Th...
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 

Understanding ReST Early Web Concepts and Confused Metaphors

  • 1. ReST vs SOA(P) yawn ... Instead ... Facts and confused metaphors for Understanding ReST
  • 2. Early Web • Human edited Files / Document Oriented programatic output • A patchy server opening up access to static files • Massive Upgrade to Human Knowlege, Communication, and Transparency
  • 3. Tech Progress • CGI Scripts • Screen scrapping clients • Spiders, Robots, and Internet Duct-tape • Dynamic HTML • XHTML & XML formats • CSS
  • 4. Roy T. Fielding Architectural Styles and the Design of Network-based Software Architectures http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm by Paul Downey
  • 5. ReST is not • A technology • A set of standards • COTS software • A tooth paste http://www.lostwackys.com/Wacky-Packages/die-cuts/Crust.htm
  • 6. ReST is • A series of constraints that defines a specific flavor of system architecture • Layered • Client / Server Representational e • Code on Demand State • Client Cache Transfer • Stateless Server
  • 7. ReST is Weak Poor network latency Difficult to identify authoritative response Uniform Interfaces degrade performance Lacks “mandatory extensions” - must understand Optimized for course grained transmissions Hard to customize
  • 8. but also ReST is Dope because of Low technical barrier to play General Interfaces Resource Extensibility Massively Scalable Independent Deployment
  • 9. UnReST Lastly in his Thesis Fielding identifies these issues with HTTP • Cookies - enabled server side session • Personalization • Vendor specific extensions Did the masses listen to academia?
  • 10. A Common Path /Server.do?some=stuff RPC style Sessions XML-RPC Large Controllers SOAP Query String Param mappers Form deserializers Abstract away the network!
  • 11. A Common Path? • Focus on APIs, distributed transactions, etc • Procedural code • Distributed OOP 1992 called, it wants it’s CORBA back ...
  • 12. http://www.wisconsinhistory.org/whi/fullimage.asp?id=13487 RPC usually fights the web with Complexity ReST Web Services are injected into HTTP molds with gooey Web2.0 filling
  • 13. ReSTful Web Services? Madge! You’re suggesting there’s issues with transporting all my SOAP traffic over POST through one URI? Relax, SOAP document literal over HTTP is the most popular. But won’t I lose transport independence? Yes, but if you add using GET, more endpoints, etc you can have caching for free! via Shannon C. on Flickr
  • 14. ReST in 90 seconds • URIs • Resources • Representations • State Transitions • User agents, intermediaries, and servers • Uniform Interfaces
  • 15. Core Concepts http://flickr.com/photos/68661927@N00/350737025/in/photostream/
  • 16. URI • Everything has a name • Excel good C3 = B3 * B2 • Outlook bad - No address for “Last email from RSDG” • This presentation is available at http://www.slideshare.net/ozten/slideshows
  • 17. Resources • Any “Thing” - concept, event, person • Anything you would want to point too • Request or Respose = data + metadata in an envelope with control data • Explicit request / response - no hidden state • Easier to load balance • Easier to troubleshoot
  • 18. Representations • A serializable description of a Resource • Modify resources through representations • XHTML Microformats • Industry standard binary formats ( jpg, mpg, etc ) • JSON • XML ( Atom or custom ) • The resource itself for static files
  • 19. State Transitions Hypermedia as the engine of • Links application state • link, img, and a tags • Forms Links and forms are the hypermedia elements of XHTML. They create the network effect of the web. Every resource represents a state in your application. State transition aren’t hidden behind an API, but are instead transmitted back in forth in a hypermedia protocol. Client’s can follow these links and be less fragile to future changes. RPC usually lacks links and encourages assumptions about formatting URI or server states.
  • 20. Client / Server • User Agents • Web browsers • HTTP libraries - libwww, libcurl, etc • Proxies • Gateways • Servers
  • 21. Uniform Interfaces HTTP Method Guarantee # Of Effects 0 GET, HEAD Safe 1 PUT, DELETE Idempotent POST None ??? Möbius strip via wikipediajpg
  • 22. So What? Most popular example: • Stateless Client / Server rules give us • Client Side Cache • HTTP 1.1 conditional GET • Implement Etags, If-Modified-Since • Real savings time, $, and complexity
  • 24. But, Browsers only do GET and POST • Yep, their horrible ReST clients • Web Developers use XMLHttpRequest for PUT, DELETE, etc • Outside of browser, use HttpClient, libwww, or libcurl • ReST uniform interface means you can tunnel PUT, DELETE over POST or write one off Proxy via cleansweepsupply.com
  • 25. ReST is just CRUD • Sure you can expose HTTP SQL CRUD POST INSERT Create DB on web GET SELECT Read • Too cute and simple PUT UPDATE Update right? DELETE DELETE Delete It’s about favoring protocols Refactor design to use and resources over APIs. new resources if you run out of HTTP methods
  • 26. Example Requirment: A user can subscribe to an artist feed ArtistWS.subscribeUserTo( User user, Feed feed ) POST /subscriptions OR artist=Art.1234 feed=Feed.2345 email=false Location: http://foo.com/subscription/Sub.3456 Artist - GET, PUT, DELETE Feed - GET, PUT, DELETE Subscription - GET, POST, PUT, DELETE User - GET, POST, PUT, DELETE
  • 27. We need WSDL for ReST • Yes, programmers need documentation and a way to discover functionality • ReST gets for free • Uniform Interface • Transparent data and HTTP tools • Explicit state transitions • Power of XML - XSD, extensibility, etc
  • 28. • WSDL tries to hide network, parsing and formating messages, loose typing • Often WSDL is an afterthought, a verbose format itself, used to generate incredibly verbose SOAP payloads - Yeah tools! • Doesn’t actually solve the really hard problems, still need other WS-* specs focused on such as transitions or security
  • 29. • ReST still requires you to document your resources, representations, and other highly application specific details • URI, Microformats, XSD, hypermedia, etc let ReST clients do this in a lightweight manner • URITemplates, XHTML 5, etc coming • besides, WSDL2Foo is bad
  • 30. WADL • Don’t agree that WSDL2Foo is bad? • OKAY, Use WADL • WSDL like tool
  • 31. Rare Conceptions • ReST is nothing more than the web circa 2003 • Human and programatic web both thrive under ReST constraints • It’s the Data, not the Source, not the API, not the platform • Mashups and ??? (future emergent techniques) are easier with ReST
  • 32. Surprise, you’re soaking in it... Everything we do over HTTP is “ReST”, but we can build systems that work with the natural form Call the police! These of the web APIs are a crime!
  • 33. ReST isn’t your solution • If your doing sophisticated mission critical distributed programming with transactions across multiple partners in synergistic fashion • Use CORBA, EDI, Stateful protocol, etc • Client and server written in Java? Use RMI, Jini, etc • Invent a new architecture by applying constraints to derive a solution that works with your problem space ala Chapter 5 of Fielding