Your SlideShare is downloading. ×
0
HTTP, AtomPub, REST & CMIS
27-jan-2009 / CMIS F2F - Redmond
David Nuescheler
with input from Julian Reschke
Agenda

 REST & HTTP intro
 AtomPub vs. CMIS
 A good “Web”-citizen: Specific issues
 General Questions for the TC
REST & HTTP Introduction
related to CMIS
REST & HTTP intro




      REST is an
      architectural style.
                          ”Bindings”
      *not a protoc...
REST & HTTP intro




      A “good HTTP citizen”
      follows REST constraints
      *not necessarily all constraints.

...
Good HTTP citizens
(incomplete)


    (1) Stateless


            Current Draf
                         t
                ...
Good HTTP citizens
(incomplete)


   (2) Data vs. Control Orientation
   (3) Bookmarkability / Linkability
   (4) Proper u...
AtomPub vs. CMIS
AtomPub vs. CMIS




      AtomPub is by design
      functionally very limited.
      *currently
                   WebDa...
AtomPub vs. CMIS




      AtomPub does not support
      Folders.
      *and a lot of other things.
                     ...
AtomPub vs. CMIS




      Be a “good AtomPub
      citizen”.
                                    Get
      *well designed...
A good “Web”-citizen:
Specific CMIS issues.
Reference to REST



      Rename REST-Bindings to quot;AtomPub
      Bindingsquot; or quot;AtomPub Extensionsquot;



   ...
CMIS- headers




      Reconsider HTTP Extensions

      Recommendation: Drop headers in favour
      of query parameters...
Terminology




      various terminology issues

      APP -> AtomPub
      Atom call -> [HTTP|AtomPub] request
      HTT...
JSON MIME type




      bad MIME type for JSON
      specified

      “The MIME media type for JSON text is application/j...
broken XML in examples




      Fix XML
      There are several examples where the XML is broken in that
      ampersands...
cacheability extended request
headers



       cacheability in presence of
       extension request headers
       Should...
Permission Denied




      mapping for
      PermissionDeniedException
      Should be 403 not 401




                  ...
syntax for CMIS link types




       'cmis-' before the link name
       Short names need to be registered with IANA. The...
Stability of IDs in atom feeds




       URL does not satisfy atom id
       requirements
       http://greenbytes.de/tec...
use of PUT for partial updates




       Partial update should not use
       PUT
       This really should use PATCH (<h...
Location header in examples




       Wrong location headers
       In general, for PUT->2xx, the only legal Location hea...
confusion about mime types




      Mime-types?
      inconsistent use of mimetypes
      “Application/cmisquery+xml”
   ...
creating new resources




       AtomPub vs. CMIS
       RFC 5023: new non-atom-entry resources are created by
       POS...
PUT semantics conflict



       quot;Because repositories MAY automatically
       create new Document Versions on a user...
content negotiation priorities



       quot;When the client sends an Accept header
       that applies to more than one ...
content negotiation priorities



       quot;When the client sends an Accept header
       that applies to more than one ...
General Questions for the TC
Why have a “REST” binding?




      What’s the motivation
      behind the second
      binding?
Motivation? Guesses....



  1. easy HTTP access using browsers?
  2. standard HTTP interface for files and folders?
  3. ...
1) Browsers?




      Recommendation:
      XHTML + microformats
2) Files and Folders?




       Recommendation:
       WebDAV
3) Atom Feed tools?




      Is this really a match for
      the CMIS Domain Model?
      If yes, we should really
     ...
4) Buzzword compliance?




      Recommendation:
      Define your own mime-types.
      Use standard link relations and ...
Why two mandatory bindings?




      Is this really a good thing?
      Are the AtomPub bindings
      worth the trouble?
Upcoming SlideShare
Loading in...5
×

CMIS REST HTTP

6,489

Published on

Presentation during the first CMIS F2F with respect to the so-called REST bindings

Published in: Technology

Transcript of "CMIS REST HTTP"

  1. 1. HTTP, AtomPub, REST & CMIS 27-jan-2009 / CMIS F2F - Redmond David Nuescheler with input from Julian Reschke
  2. 2. Agenda  REST & HTTP intro  AtomPub vs. CMIS  A good “Web”-citizen: Specific issues  General Questions for the TC
  3. 3. REST & HTTP Introduction related to CMIS
  4. 4. REST & HTTP intro REST is an architectural style. ”Bindings” *not a protocol. not possible
  5. 5. REST & HTTP intro A “good HTTP citizen” follows REST constraints *not necessarily all constraints. Lessons learned.
  6. 6. Good HTTP citizens (incomplete) (1) Stateless Current Draf t OK
  7. 7. Good HTTP citizens (incomplete) (2) Data vs. Control Orientation (3) Bookmarkability / Linkability (4) Proper use of HTTP Methods (5) Distributed Cacheability (6) Self Descriptive Messages (7) Decoupling Current Draf t needsfixing
  8. 8. AtomPub vs. CMIS
  9. 9. AtomPub vs. CMIS AtomPub is by design functionally very limited. *currently WebDav?
  10. 10. AtomPub vs. CMIS AtomPub does not support Folders. *and a lot of other things. “ dd it” to A AtomPub.
  11. 11. AtomPub vs. CMIS Be a “good AtomPub citizen”. Get *well designed extension. AtomPub autho rs.
  12. 12. A good “Web”-citizen: Specific CMIS issues.
  13. 13. Reference to REST Rename REST-Bindings to quot;AtomPub Bindingsquot; or quot;AtomPub Extensionsquot; issue - 8 1
  14. 14. CMIS- headers Reconsider HTTP Extensions Recommendation: Drop headers in favour of query parameters issue - 9 1
  15. 15. Terminology various terminology issues APP -> AtomPub Atom call -> [HTTP|AtomPub] request HTTP Header Tag -> HTTP Header URI arguments -> query parameters issue - 1 2
  16. 16. JSON MIME type bad MIME type for JSON specified “The MIME media type for JSON text is application/json.” http://tools.ietf.org/html/rfc4627 issue - 2 2
  17. 17. broken XML in examples Fix XML There are several examples where the XML is broken in that ampersands appear unescaped in attribute values, such as in: query: <link rel=quot;nextquot; href=quot;http://example.org/ cmis/main?unfiled&n=100quot;/> issue - 3 2
  18. 18. cacheability extended request headers cacheability in presence of extension request headers Should specify Vary header. issue - 4 2
  19. 19. Permission Denied mapping for PermissionDeniedException Should be 403 not 401 issue - 5 2
  20. 20. syntax for CMIS link types 'cmis-' before the link name Short names need to be registered with IANA. The alternative is to use absolute URIs for the link names (actually IRIs) http://greenbytes.de/tech/webdav/rfc4287.html#rfc.section.4.2.7.2 issue - 6 2
  21. 21. Stability of IDs in atom feeds URL does not satisfy atom id requirements http://greenbytes.de/tech/webdav/rfc4287.html#rfc.section.4.2.6 quot;The quot;atom:idquot; element conveys a permanent, universally unique identifier for an entry or feed.quot; issue - 7 2
  22. 22. use of PUT for partial updates Partial update should not use PUT This really should use PATCH (<http://tools.ietf.org/html/ rfc2068#section-19.6.1.1&gt;), or alternatively POST issue - 8 2
  23. 23. Location header in examples Wrong location headers In general, for PUT->2xx, the only legal Location header value would be one that is identical to the RequestURI. issue - 9 2
  24. 24. confusion about mime types Mime-types? inconsistent use of mimetypes “Application/cmisquery+xml” “Application/cmisallowableactions+xml” quot;application/cmis+xml;type=searchrequestquot; mime-types need a proper definition suitable for IANA registration issue -30
  25. 25. creating new resources AtomPub vs. CMIS RFC 5023: new non-atom-entry resources are created by POSTing to a media collection In CMIS, createDocument suggests to create the media entry first, and to either inline the content (base64!), or to set the content in a second request on the media entry. issue -31
  26. 26. PUT semantics conflict quot;Because repositories MAY automatically create new Document Versions on a user's behalf, the Location returned may not match the URL of the PUT request.quot; Don’t use PUT. issue -32
  27. 27. content negotiation priorities quot;When the client sends an Accept header that applies to more than one format, the CMIS Atom format will be chosen.quot; Even if quality values give preference to a different format, and that different format is supported by the server? issue -33
  28. 28. content negotiation priorities quot;When the client sends an Accept header that applies to more than one format, the CMIS Atom format will be chosen.quot; Even if quality values give preference to a different format, and that different format is supported by the server? issue -34
  29. 29. General Questions for the TC
  30. 30. Why have a “REST” binding? What’s the motivation behind the second binding?
  31. 31. Motivation? Guesses.... 1. easy HTTP access using browsers? 2. standard HTTP interface for files and folders? 3. easy Atom access using feed tools / Atom Readers? 4. buzzword compliance? 5. ??
  32. 32. 1) Browsers? Recommendation: XHTML + microformats
  33. 33. 2) Files and Folders? Recommendation: WebDAV
  34. 34. 3) Atom Feed tools? Is this really a match for the CMIS Domain Model? If yes, we should really make it Atom.
  35. 35. 4) Buzzword compliance? Recommendation: Define your own mime-types. Use standard link relations and hypertext-enabled data formats. All important resources must have a URI.
  36. 36. Why two mandatory bindings? Is this really a good thing? Are the AtomPub bindings worth the trouble?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×