際際滷

際際滷Share a Scribd company logo
Your data needs to be
promiscuous
If theres any hope of it
hooking up with the iPhone
Your data needs to be
promiscuous
If theres 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 identi鍖ed by the type of object in
        the collection
        http://baseurl/resource/
       Items are identi鍖ed by the type and ID of the
        item
        http://baseurl/resource/12
       Collections can be related to a speci鍖c 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 鍖ag
        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

More Related Content

Rest

  • 1. Your data needs to be promiscuous If theres any hope of it hooking up with the iPhone
  • 2. Your data needs to be promiscuous If theres 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
  • 7. REST Representational State Transfer
  • 8. Representing State JSON HTML PDF XML?
  • 9. 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.
  • 10. Verbs GET: Retrieve data PUT: Replace data POST: Add data [PATCH]: Update data DELETE: Remove data
  • 11. HTTP
  • 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 identi鍖ed by the type of object in the collection http://baseurl/resource/ Items are identi鍖ed by the type and ID of the item http://baseurl/resource/12 Collections can be related to a speci鍖c 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 鍖ag 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. HTTP
  • 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

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n