1. Apache Sling
Andreas Hartmann
CTO, BeCompany GmbH
2. REST
REpresentational State Transfer
Roy T. Fielding‘s dissertation
Not a technology/standard/software
Set of architectural constraints
Optimized for common use-cases of the WWW
(based on experience)
3. REST in the WWW
HTML docs (representations) = states
Hyperlinks + forms = transitions
GET /products/lenya
/products/lenya
/products
/products/cocoon
POST /products/cocoon
title=Apache%20Cocoon
6. REST Data Elements
Resource (anything that can be addressed,
independent of a particular point in time)
URIs to identify resources
Resource metadata: source link, alternates, …
Representation = data (byte sequence)
Repr. metadata: media type, last modified, …
7. Uniform Interface
Representation of resources in one of an
emerging set of standard formats
Uniform resource identification mechanism
Messages are self-descriptive:
representation/resource/control metadata
Intermediaries can transform the messages,
e.g. compressing for optimized transport
8. Common Violations
Indirect application state:
Addressing and caching issues
Cookies (server-side state)
Frames
Incremental processing issues
Embedding metadata in HTML head
<img> without @width, @height
dynamically sized table columns
9. Apache Sling
Web application framework
JCR for content storage
Process HTTP requests in a RESTful way
Scripts (JSR-233) or Servlets for processing
OSGi for deploying modules at runtime
11. Sling encourages REST
Thinking in resources (mapped to JCR nodes)
Representation selection (HTML, Atom, PDF,
…) via part of URI
Uniform interface for content handling:
GET + POST + PUT + DELETE
12. UnRESTful Addressing
/product .jsp ?id=13423
URI doesn't address Not part of URI:
the resource not cacheable
13. Request Processing in Sling
GET /news/today .atom PUT /news/today ?title=Today
Resource Resource
sling:resourceType sling:resourceType
feed feed
Servlet / Script Servlet / Script
/apps/feed/atom.esp /apps/feed/PUT.esp