KEMBAR78
Rest | KEY
Your data needs to be
promiscuous
If there’s any hope of it
hooking up with the iPhone
Your data needs to be
promiscuous
If there’s any hope of it
hooking up with the iPhone
API
•       The I means Interface
•       Necessary to interact with any application
        outside of a web site
    •    Smart phone
    •    Ajax
BPEL
 SOAP



RPC     WSDL
Facebook
Twitter
REST
•   Representational
•   State
•   Transfer
Representing State
•   JSON
•   HTML
•   PDF
•   XML?
XML

James Clark:
 “My reaction to JSON is a combination of ‘Yay’ and ‘Sigh’.
 It's ‘Yay’, because for important use cases JSON is dramatically better
 than XML. In particular, JSON shines as a programming language-
 independent representation of typical programming language data
 structures. This is an incredibly important use case and it would be hard
 to overstate how appallingly bad XML is for this. The fundamental
 problem is the mismatch between programming language data structures
 and the XML element/attribute data model of elements.”
Verbs
•   GET: Retrieve data
•   PUT: Replace data
•   POST: Add data
•   [PATCH]: Update data
•   DELETE: Remove data
HTTP
Collections
•       GET: List items in a collection
•       PUT: Replace a collection with new items
    •    Functions as a PATCH in the real world
•       POST: Add an item to this collection
    •    New or existing item
•       DELETE: Remove all items in this collection
    •    There be danger
Item
•       GET: Retrieve the representation of this item
•       PUT: Update the item with new values
    •    Functions as PATCH in the real world
•       DELETE: Remove the item
Uniformity
•       Relative to a base URL
    •    A description of resources often placed here
•       Collections are identified by the type of object in
        the collection
    •    http://baseurl/resource/
•       Items are identified by the type and ID of the
        item
    •    http://baseurl/resource/12
•       Collections can be related to a specific item
    •    http://bareurl/parent/12/resource
Varied Representations
•       Requesting a return type may be done through
        resource URL
    •    http://baseurl/resource/12.json
    •    http://baseurl/resource/12.html
•       Requesting a return type may be done through
        Accept header
    •    Accept: application/json
Responses
•       Use HTTP error codes where appropriate
•       Standardize a method of measuring success
•       Standardize a method of returning errors
    •    Add an error flag
    •    State the main error message
    •    State the error type
    •    Allow data to be conveyed along with the error
Blog
•       Uses many REST patterns
•       Collection of posts often at /blog/
    •    Object type used for lookup
•       Items usually at /blog/id
•       Items can be added to a category “collection” of
        posts
Caching
•       GET requests can be cached by browsers
    •    Should never alter state
    •    Several headers in the return enable it
•       No other verbs will be cached regardless of
        headers
HTTP
Security
•       Date, URL, content can be combined and hashed
    •    HMAC-SHA-1 with a secret key
    •    API ID sent in a header
    •    Used by many Amazon services

Rest

  • 1.
    Your data needsto be promiscuous If there’s any hope of it hooking up with the iPhone
  • 2.
    Your data needsto be promiscuous If there’s any hope of it hooking up with the iPhone
  • 3.
    API • The I means Interface • Necessary to interact with any application outside of a web site • Smart phone • Ajax
  • 4.
  • 5.
  • 6.
  • 7.
    REST • Representational • State • Transfer
  • 8.
    Representing State • JSON • HTML • PDF • XML?
  • 9.
    XML James Clark: “Myreaction to JSON is a combination of ‘Yay’ and ‘Sigh’. It's ‘Yay’, because for important use cases JSON is dramatically better than XML. In particular, JSON shines as a programming language- independent representation of typical programming language data structures. This is an incredibly important use case and it would be hard to overstate how appallingly bad XML is for this. The fundamental problem is the mismatch between programming language data structures and the XML element/attribute data model of elements.”
  • 10.
    Verbs • GET: Retrieve data • PUT: Replace data • POST: Add data • [PATCH]: Update data • DELETE: Remove data
  • 11.
  • 12.
    Collections • GET: List items in a collection • PUT: Replace a collection with new items • Functions as a PATCH in the real world • POST: Add an item to this collection • New or existing item • DELETE: Remove all items in this collection • There be danger
  • 13.
    Item • GET: Retrieve the representation of this item • PUT: Update the item with new values • Functions as PATCH in the real world • DELETE: Remove the item
  • 14.
    Uniformity • Relative to a base URL • A description of resources often placed here • Collections are identified by the type of object in the collection • http://baseurl/resource/ • Items are identified by the type and ID of the item • http://baseurl/resource/12 • Collections can be related to a specific item • http://bareurl/parent/12/resource
  • 15.
    Varied Representations • Requesting a return type may be done through resource URL • http://baseurl/resource/12.json • http://baseurl/resource/12.html • Requesting a return type may be done through Accept header • Accept: application/json
  • 16.
    Responses • Use HTTP error codes where appropriate • Standardize a method of measuring success • Standardize a method of returning errors • Add an error flag • State the main error message • State the error type • Allow data to be conveyed along with the error
  • 17.
    Blog • Uses many REST patterns • Collection of posts often at /blog/ • Object type used for lookup • Items usually at /blog/id • Items can be added to a category “collection” of posts
  • 18.
    Caching • GET requests can be cached by browsers • Should never alter state • Several headers in the return enable it • No other verbs will be cached regardless of headers
  • 19.
  • 20.
    Security • Date, URL, content can be combined and hashed • HMAC-SHA-1 with a secret key • API ID sent in a header • Used by many Amazon services