Your SlideShare is downloading. ×

CMIS REST HTTP

6,353

Published on

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

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

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,353
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
96
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. HTTP, AtomPub, REST & CMIS 27-jan-2009 / CMIS F2F - Redmond David Nuescheler with input from Julian Reschke
  • 2. Agenda  REST & HTTP intro  AtomPub vs. CMIS  A good “Web”-citizen: Specific issues  General Questions for the TC
  • 3. REST & HTTP Introduction related to CMIS
  • 4. REST & HTTP intro REST is an architectural style. ”Bindings” *not a protocol. not possible
  • 5. REST & HTTP intro A “good HTTP citizen” follows REST constraints *not necessarily all constraints. Lessons learned.
  • 6. Good HTTP citizens (incomplete) (1) Stateless Current Draf t OK
  • 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. AtomPub vs. CMIS
  • 9. AtomPub vs. CMIS AtomPub is by design functionally very limited. *currently WebDav?
  • 10. AtomPub vs. CMIS AtomPub does not support Folders. *and a lot of other things. “ dd it” to A AtomPub.
  • 11. AtomPub vs. CMIS Be a “good AtomPub citizen”. Get *well designed extension. AtomPub autho rs.
  • 12. A good “Web”-citizen: Specific CMIS issues.
  • 13. Reference to REST Rename REST-Bindings to quot;AtomPub Bindingsquot; or quot;AtomPub Extensionsquot; issue - 8 1
  • 14. CMIS- headers Reconsider HTTP Extensions Recommendation: Drop headers in favour of query parameters issue - 9 1
  • 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. 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. 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. cacheability extended request headers cacheability in presence of extension request headers Should specify Vary header. issue - 4 2
  • 19. Permission Denied mapping for PermissionDeniedException Should be 403 not 401 issue - 5 2
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. General Questions for the TC
  • 30. Why have a “REST” binding? What’s the motivation behind the second binding?
  • 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. 1) Browsers? Recommendation: XHTML + microformats
  • 33. 2) Files and Folders? Recommendation: WebDAV
  • 34. 3) Atom Feed tools? Is this really a match for the CMIS Domain Model? If yes, we should really make it Atom.
  • 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. Why two mandatory bindings? Is this really a good thing? Are the AtomPub bindings worth the trouble?

×