SlideShare a Scribd company logo
1 of 25
OPEN-TRAVEL
AND RESTFUL RESOURCES
 Championed by the Web community




Roni Schuetz,
Enterprise Software Architect
Miami, April 2012


©2010 Hewlett-Packard Development Company, L.P.
The information contained herein is subject to change without
notice
API Stats




http://www.programmableweb.com/apis
API Stats
Representational State Transfer
• Fielding captured his interpretation of the
  WWW architecture in his 2000 thesis
• Adopted by major vendors (HP, Sabre, Amtrak,
  Microsoft, Oracle, Google, Facebook, EBAY, and
  others)
• It’s an alternative to WS-* implementations
Do we need REST?
• We need a natural way to model resource-based
  services: that’s why we are here: OTA!
• We should leverage the principles of the web on
  SOA applications
• Some WS-* are too complex and completely
  unnecessary(WS-Transfer, WS-Enumeration)
• WS-* interoperability is a big challenge for
  internet web services
• Resources provide flexible usage of common
  resources and operations which is not given by
  WS-*
REST in one slide
• Resources expose their data and functionality through resources
  identified by a unique URI
• Uniform Interface Principle: Clients interact with resources through a
  fix set of verbs
                                                              PUT
    – Example:
        •   GET – read

                                                                    R
        •   PUT – update                               GET
        •   DELETE – remove
        •   POST – create                              POST
• Multiple representations for the same resource
    – Example:                                                DELETE
        • JSON (Java Script Object Notation)
        • XML
• Hyperlinks model resource relationships and valid transfer state
  transitions for dynamic protocol description and discovery
REST Principles
• Resource based - not service based
• Addressability - name everything that matters
• Statelessness - no stateful messages exchange
  with a resource
• Relationships - expressed through links
• HTTP based
Resource based
• A resource is something “interesting” in your system
   – Can be anything
      • Spreadsheet
      • Printer
      • Inventory, Schedule, Flights
   – Others?
• Making your system Web-friendly increases its surface
  area
• You expose many resources, rather than few web
  service endpoints
• Good approach is to think in NOUN’s which appear in
  the travel domain
• The VERB’s are the actions on the noun
   – sounds familiar
HTTP based?
• REST principles are not HTTP dependent
• Typically REST should be implemented as an
  HTTP architectural style
• REST expresses dependencies on HTTP specific
  concepts such as verbs, URIs and headers
• In the future maybe non HTTP-based REST
RESTful Services best practices
•   Representation agnostic
•   Versioning
•   Service Description
•   Exception Handling
•   Security
•   Service Repository
Q&A
Thank you




Roni Schuetz, roni.schuetz@hp.com
References & Resources
•   http://www.xml.com/pub/a/2004/12/01/restful-web.html
•   http://www.infoq.com/articles/webber-rest-workflow
•   http://www.infoq.com/presentations/BPM-with-REST
•   http://books.google.ch/books?id=XUaErakHsoAC
•   http://www.soapatterns.org/atomic_service_transaction.php
•   http://www.soaprinciples.com/service_statelessness.php
GET vs. POST Retrieving Paradigm
• To retrieve a “thing” from a Resource we have
  2 options:
  – The HTTP GET options:                                    PUT
     • GET ./order/221

                                                                   R
                                                      GET
     • GET ./order?id=221
                                                      POST
  – The HTTP POST option:                                    DELETE
     • POST /order
        – id = 221 [key value] … add as much as you need!
HTTP Sample for get / post


  GET /index.html?userid=joe&password=guessme
  HTTP/1.1 Host: www.mysite.com
  User-Agent: Mozilla/4.0




  POST /login.jsp HTTP/1.1
  Host: www.mysite.com
  User-Agent: Mozilla/4.0
  Content-Length: 27
  Content-Type: application/x-www-form-urlencoded

  userid=joe&password=guessme
  Resource: http://developers.sun.com/mobility/midp/ttips/HTTPPost/
The “thing” retrieval pattern                            PUT



                                                               R
                                                   GET
• use GET and not POST
                                POST 1 + POST 2 …. POST n 
• Why not POST?
  – Overloaded POST: the not-so-RESTful pattern DELETE
  – It’s overloaded because a single HTTP method is
    being used to signify any number of non-HTTP
    methods.
  – By using POST it will happen very easy that we
    implement an RPC service. In a RPC service we are
    using post and the Action is one of it’s parameters:
    ”/orders?action=delete&id=13”
     • That’s not REST!
PUT vs. POST Creation Paradigm

• To create a new “thing” shall I use PUT or
  POST?

  There is a clear principle for this paradigm:
     • If the client is responsible for creating the ID’s of the
       “thing” use a PUT
         – E.g: “./users/roni” <- roni is unique and given by the client -
           this is a new URI!
     • If the server is responsible for creating the ID of the
       “thing” use a POST
         – E.g. “./users/” and as a post key/value the client transfers
           username=roni and prob. to id would be an auto generated
           number.
Resource naming structure pattern
Resource Name: /orders
          Action             URI Address Template                   HTTP Method
Create an order              /orders                                     POST
Get an order by given        ./orders/{id}                                GET
order id
Update an order              ./orders/{id}                                PUT
Delete an order              ./orders/{id}                               DELETE


Resource semantics:
- plural nouns (resources)
- think of a file system:
          - C:ota -> returns a list of files & folders
          - C:otadata.txt -> returns the data for this resource
-
HTTP status codes on a Resource
Resource                 Method                  Status Code                    CRUD - Action
./Orders                 POST                    200, 201, 400, 503, ….         Create
./Orders                 GET                     200, 301, 410, 503, ….         Receive
./Orders                 PUT                     200, 301, 400, 410, 503, ….    Update
./Orders                 DELETE                  200, 204, 503, ….              Delete




Status Code              Description
200                      OK
201                      Created
204                      No Content
301                      Moved Permanently
400                      Bad Request
410                      Gone
500                      Internal Server Error
501                      Not Implemented
503                      Service Unavailable

Status Code Reference: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
PUT
HTTP HEAD and OPTIONS                                                                                OPTIONS
There are 2 other HTTP methods which are a part of a URI:

- HEAD: Retrieve a metadata-only representation
                                                                                 GET

                                                                                 POST
                                                                                             R            HEAD
- OPTIONS: Check which HTTP methods a particular resource supports
                                                                                        DELETE
HEAD:
- making a call to a resource to fetch metadata without downloading an entire collection
- a client can use HEAD to check if a resource exists, to find out other information about the resource
without fetching it's entire representation. So we have the same functionality like a HTTP GET but now
the call does not fetch data.

OPTIONS:
- The OPTIONS method lets the client to discover what it's allowed to do to a resource. The response to
an OPTIONS request contains the HTTP Allow header, which lays out the subset of the uniform interface
this resource supports.

E.g. : Allow: GET, HEAD

That means that the client can send a GET and HEAD request to this resource but the resource does not
support any other methods - effectively, this resource is read-only.
Representations / content negotiation

  Web page with a                                       List of process input
 form to start a new                                         parameters
   process instance
                       Content Type:
                                                        Content Type:
                       text/html
                                                        application/xml


                              GET /process/name

                                                         Content Type:
                                                         application/json
      Content Type:                     Content Type:
      text/plain                        image/svg+xml


                                                           Process metadata
   Basic textutal                                               in JSON
                               Images / Pictures
 description of the
      process
API Versioning
• This concept makes it very easy to maintain
  different versions:

   –   GET /1.0/orders/ {id}
   –   GET /1.1/orders/ {id}
   –   GET /2.1/orders/ {id}
   –   GET /7.0/orders/
   –   GET /7.5/orders/

• Make your resource version visible, it’s a big part
  for resource usability
REST as a new connector

 RPC:
 Remote Procedure Call

                               REST / HTTP:
                               Representational State Transfer
                               Hypertext Transfer Protocol


                           R                                         R
 ESB:
 Enterprise Service Bus           R               R              R
                                   GET / PUT / POST / DELETE

     PUBLISH / SUBSCRIBE
Working with resources in sync mode
                  /process
                             • Client waits until the process
C                    R         is done!
 POST /process


                                                     DO SOMETHING
                                                     ON THE SERVER




         200 OK              • Block the client until the
         Execution
         done
                               execution is done

 Note: blocking & non blocking requests are supported by HTTP
Working with resources in async mode
                    /process
                               • Client starts a long running
C                   R            process
 POST /process                 • Asynchronously process
      202 ACCEPTED               between the client and the
      Location: x
                                 started process
                               • Retrieve the current state of
                                 the started process
 GET /process/x

           200 OK


 Note: blocking & non blocking requests are supported by HTTP

More Related Content

What's hot

Layouts and Rendering in Rails, Season 2
Layouts and Rendering in Rails, Season 2Layouts and Rendering in Rails, Season 2
Layouts and Rendering in Rails, Season 2RORLAB
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding RESTNitin Pande
 
REST Introduction (PHP London)
REST Introduction (PHP London)REST Introduction (PHP London)
REST Introduction (PHP London)Paul James
 
Creating Truly RESTful APIs
Creating Truly RESTful APIsCreating Truly RESTful APIs
Creating Truly RESTful APIsDomenic Denicola
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsStormpath
 
Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5Michael Girouard
 
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...ruyalarcon
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016Restlet
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPressTaylor Lovett
 
Parsing strange v2
Parsing strange v2Parsing strange v2
Parsing strange v2Hal Stern
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASRepresentational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASGuy K. Kloss
 
Routing 1, Season 1
Routing 1, Season 1Routing 1, Season 1
Routing 1, Season 1RORLAB
 
So various polymorphism in Scala
So various polymorphism in ScalaSo various polymorphism in Scala
So various polymorphism in Scalab0ris_1
 
Action Controller Overview, Season 2
Action Controller Overview, Season 2Action Controller Overview, Season 2
Action Controller Overview, Season 2RORLAB
 

What's hot (20)

Layouts and Rendering in Rails, Season 2
Layouts and Rendering in Rails, Season 2Layouts and Rendering in Rails, Season 2
Layouts and Rendering in Rails, Season 2
 
Understanding REST
Understanding RESTUnderstanding REST
Understanding REST
 
REST Introduction (PHP London)
REST Introduction (PHP London)REST Introduction (PHP London)
REST Introduction (PHP London)
 
Creating Truly RESTful APIs
Creating Truly RESTful APIsCreating Truly RESTful APIs
Creating Truly RESTful APIs
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5Creating And Consuming Web Services In Php 5
Creating And Consuming Web Services In Php 5
 
Ws rest
Ws restWs rest
Ws rest
 
Develop webservice in PHP
Develop webservice in PHPDevelop webservice in PHP
Develop webservice in PHP
 
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...
Fulfilling the Hypermedia Constraint via HTTP OPTIONS, The HTTP Vocabulary In...
 
Http
HttpHttp
Http
 
The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016The never-ending REST API design debate -- Devoxx France 2016
The never-ending REST API design debate -- Devoxx France 2016
 
REST presentation
REST presentationREST presentation
REST presentation
 
JSON REST API for WordPress
JSON REST API for WordPressJSON REST API for WordPress
JSON REST API for WordPress
 
Rest and Rails
Rest and RailsRest and Rails
Rest and Rails
 
Parsing strange v2
Parsing strange v2Parsing strange v2
Parsing strange v2
 
REST, RESTful API
REST, RESTful APIREST, RESTful API
REST, RESTful API
 
Representational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOASRepresentational State Transfer (REST) and HATEOAS
Representational State Transfer (REST) and HATEOAS
 
Routing 1, Season 1
Routing 1, Season 1Routing 1, Season 1
Routing 1, Season 1
 
So various polymorphism in Scala
So various polymorphism in ScalaSo various polymorphism in Scala
So various polymorphism in Scala
 
Action Controller Overview, Season 2
Action Controller Overview, Season 2Action Controller Overview, Season 2
Action Controller Overview, Season 2
 

Similar to RESTful for opentravel.org by HP

OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Alliance
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIsamesar0
 
Rest presentation
Rest  presentationRest  presentation
Rest presentationsrividhyau
 
Getting started with DSpace 7 REST API
Getting started with DSpace 7 REST APIGetting started with DSpace 7 REST API
Getting started with DSpace 7 REST API4Science
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiTiago Knoch
 
Restful webservice
Restful webserviceRestful webservice
Restful webserviceDong Ngoc
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsCarol McDonald
 
When RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTPWhen RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTPMatthew Turland
 
Designing a RESTful web service
Designing a RESTful web serviceDesigning a RESTful web service
Designing a RESTful web serviceFilip Blondeel
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
So you think you know REST - DPC11
So you think you know REST - DPC11So you think you know REST - DPC11
So you think you know REST - DPC11Evert Pot
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011Shreedhar Ganapathy
 
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Nguyen Duc Phu
 
nguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicenguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicehazzaz
 

Similar to RESTful for opentravel.org by HP (20)

OpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML ResourcesOpenTravel Advisory Forum 2012 REST XML Resources
OpenTravel Advisory Forum 2012 REST XML Resources
 
Pragmatic REST APIs
Pragmatic REST APIsPragmatic REST APIs
Pragmatic REST APIs
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Rest presentation
Rest  presentationRest  presentation
Rest presentation
 
Getting started with DSpace 7 REST API
Getting started with DSpace 7 REST APIGetting started with DSpace 7 REST API
Getting started with DSpace 7 REST API
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web api
 
Restful webservice
Restful webserviceRestful webservice
Restful webservice
 
WebApp #3 : API
WebApp #3 : APIWebApp #3 : API
WebApp #3 : API
 
Rest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.jsRest with Java EE 6 , Security , Backbone.js
Rest with Java EE 6 , Security , Backbone.js
 
Rest
RestRest
Rest
 
When RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTPWhen RSS Fails: Web Scraping with HTTP
When RSS Fails: Web Scraping with HTTP
 
Designing a RESTful web service
Designing a RESTful web serviceDesigning a RESTful web service
Designing a RESTful web service
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
So you think you know REST - DPC11
So you think you know REST - DPC11So you think you know REST - DPC11
So you think you know REST - DPC11
 
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
 
Rest Webservice
Rest WebserviceRest Webservice
Rest Webservice
 
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
Hanoi php day 2008 - 05. nguyen hai nhat huy - building-restful-web-service-w...
 
Apex REST
Apex RESTApex REST
Apex REST
 
nguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-servicenguyenhainhathuy-building-restful-web-service
nguyenhainhathuy-building-restful-web-service
 

Recently uploaded

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 

Recently uploaded (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

RESTful for opentravel.org by HP

  • 1. OPEN-TRAVEL AND RESTFUL RESOURCES Championed by the Web community Roni Schuetz, Enterprise Software Architect Miami, April 2012 ©2010 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice
  • 4. Representational State Transfer • Fielding captured his interpretation of the WWW architecture in his 2000 thesis • Adopted by major vendors (HP, Sabre, Amtrak, Microsoft, Oracle, Google, Facebook, EBAY, and others) • It’s an alternative to WS-* implementations
  • 5. Do we need REST? • We need a natural way to model resource-based services: that’s why we are here: OTA! • We should leverage the principles of the web on SOA applications • Some WS-* are too complex and completely unnecessary(WS-Transfer, WS-Enumeration) • WS-* interoperability is a big challenge for internet web services • Resources provide flexible usage of common resources and operations which is not given by WS-*
  • 6. REST in one slide • Resources expose their data and functionality through resources identified by a unique URI • Uniform Interface Principle: Clients interact with resources through a fix set of verbs PUT – Example: • GET – read R • PUT – update GET • DELETE – remove • POST – create POST • Multiple representations for the same resource – Example: DELETE • JSON (Java Script Object Notation) • XML • Hyperlinks model resource relationships and valid transfer state transitions for dynamic protocol description and discovery
  • 7. REST Principles • Resource based - not service based • Addressability - name everything that matters • Statelessness - no stateful messages exchange with a resource • Relationships - expressed through links • HTTP based
  • 8. Resource based • A resource is something “interesting” in your system – Can be anything • Spreadsheet • Printer • Inventory, Schedule, Flights – Others? • Making your system Web-friendly increases its surface area • You expose many resources, rather than few web service endpoints • Good approach is to think in NOUN’s which appear in the travel domain • The VERB’s are the actions on the noun – sounds familiar
  • 9. HTTP based? • REST principles are not HTTP dependent • Typically REST should be implemented as an HTTP architectural style • REST expresses dependencies on HTTP specific concepts such as verbs, URIs and headers • In the future maybe non HTTP-based REST
  • 10. RESTful Services best practices • Representation agnostic • Versioning • Service Description • Exception Handling • Security • Service Repository
  • 11. Q&A
  • 12. Thank you Roni Schuetz, roni.schuetz@hp.com
  • 13. References & Resources • http://www.xml.com/pub/a/2004/12/01/restful-web.html • http://www.infoq.com/articles/webber-rest-workflow • http://www.infoq.com/presentations/BPM-with-REST • http://books.google.ch/books?id=XUaErakHsoAC • http://www.soapatterns.org/atomic_service_transaction.php • http://www.soaprinciples.com/service_statelessness.php
  • 14. GET vs. POST Retrieving Paradigm • To retrieve a “thing” from a Resource we have 2 options: – The HTTP GET options: PUT • GET ./order/221 R GET • GET ./order?id=221 POST – The HTTP POST option: DELETE • POST /order – id = 221 [key value] … add as much as you need!
  • 15. HTTP Sample for get / post GET /index.html?userid=joe&password=guessme HTTP/1.1 Host: www.mysite.com User-Agent: Mozilla/4.0 POST /login.jsp HTTP/1.1 Host: www.mysite.com User-Agent: Mozilla/4.0 Content-Length: 27 Content-Type: application/x-www-form-urlencoded userid=joe&password=guessme Resource: http://developers.sun.com/mobility/midp/ttips/HTTPPost/
  • 16. The “thing” retrieval pattern PUT R GET • use GET and not POST POST 1 + POST 2 …. POST n  • Why not POST? – Overloaded POST: the not-so-RESTful pattern DELETE – It’s overloaded because a single HTTP method is being used to signify any number of non-HTTP methods. – By using POST it will happen very easy that we implement an RPC service. In a RPC service we are using post and the Action is one of it’s parameters: ”/orders?action=delete&id=13” • That’s not REST!
  • 17. PUT vs. POST Creation Paradigm • To create a new “thing” shall I use PUT or POST? There is a clear principle for this paradigm: • If the client is responsible for creating the ID’s of the “thing” use a PUT – E.g: “./users/roni” <- roni is unique and given by the client - this is a new URI! • If the server is responsible for creating the ID of the “thing” use a POST – E.g. “./users/” and as a post key/value the client transfers username=roni and prob. to id would be an auto generated number.
  • 18. Resource naming structure pattern Resource Name: /orders Action URI Address Template HTTP Method Create an order /orders POST Get an order by given ./orders/{id} GET order id Update an order ./orders/{id} PUT Delete an order ./orders/{id} DELETE Resource semantics: - plural nouns (resources) - think of a file system: - C:ota -> returns a list of files & folders - C:otadata.txt -> returns the data for this resource -
  • 19. HTTP status codes on a Resource Resource Method Status Code CRUD - Action ./Orders POST 200, 201, 400, 503, …. Create ./Orders GET 200, 301, 410, 503, …. Receive ./Orders PUT 200, 301, 400, 410, 503, …. Update ./Orders DELETE 200, 204, 503, …. Delete Status Code Description 200 OK 201 Created 204 No Content 301 Moved Permanently 400 Bad Request 410 Gone 500 Internal Server Error 501 Not Implemented 503 Service Unavailable Status Code Reference: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
  • 20. PUT HTTP HEAD and OPTIONS OPTIONS There are 2 other HTTP methods which are a part of a URI: - HEAD: Retrieve a metadata-only representation GET POST R HEAD - OPTIONS: Check which HTTP methods a particular resource supports DELETE HEAD: - making a call to a resource to fetch metadata without downloading an entire collection - a client can use HEAD to check if a resource exists, to find out other information about the resource without fetching it's entire representation. So we have the same functionality like a HTTP GET but now the call does not fetch data. OPTIONS: - The OPTIONS method lets the client to discover what it's allowed to do to a resource. The response to an OPTIONS request contains the HTTP Allow header, which lays out the subset of the uniform interface this resource supports. E.g. : Allow: GET, HEAD That means that the client can send a GET and HEAD request to this resource but the resource does not support any other methods - effectively, this resource is read-only.
  • 21. Representations / content negotiation Web page with a List of process input form to start a new parameters process instance Content Type: Content Type: text/html application/xml GET /process/name Content Type: application/json Content Type: Content Type: text/plain image/svg+xml Process metadata Basic textutal in JSON Images / Pictures description of the process
  • 22. API Versioning • This concept makes it very easy to maintain different versions: – GET /1.0/orders/ {id} – GET /1.1/orders/ {id} – GET /2.1/orders/ {id} – GET /7.0/orders/ – GET /7.5/orders/ • Make your resource version visible, it’s a big part for resource usability
  • 23. REST as a new connector RPC: Remote Procedure Call REST / HTTP: Representational State Transfer Hypertext Transfer Protocol R R ESB: Enterprise Service Bus R R R GET / PUT / POST / DELETE PUBLISH / SUBSCRIBE
  • 24. Working with resources in sync mode /process • Client waits until the process C R is done! POST /process DO SOMETHING ON THE SERVER 200 OK • Block the client until the Execution done execution is done Note: blocking & non blocking requests are supported by HTTP
  • 25. Working with resources in async mode /process • Client starts a long running C R process POST /process • Asynchronously process 202 ACCEPTED between the client and the Location: x started process • Retrieve the current state of the started process GET /process/x 200 OK Note: blocking & non blocking requests are supported by HTTP

Editor's Notes

  1. content type is sent from the client to the server
  2. REST Services can be considered in BPM tools as a connector