3. What is REST?
A API B Technology
C SOAP’s arch enemy D Architectural Style
4. REST: An Architectural Style
One of many Architectural Styles
Architectural principles of the
web, defined a posteriori
Defined through architectural
g
constraints Roy T.
Fieldin
Chief
Scien
at Da tist
Soft y
ware
5. Styles and implementation
examples
REST style
peer to peer style
the
we b
imp re le i s t h e
le m v a n t o n l y
ent
Napster Tat io W
R ES he n eb
T of
6. REST ingredients
ly the Resources
rough aints
constr s thesis
from
Roy’ Representations of resources
Uniform interface
Hypertext and links
Stateless communication
7. Resources
give all relevant things an ID
don’t
http://example.com/cars/models/320
have
prett to be
y
Representations
http://example.com/cars/models/320.html
http://example.com/cars/models/320.json
http:/ /example.com/cars/models/320.xml
http://example.com/cars/models/320.jsp
8. in
a llows s to
diarie hes,
terme d (cac
Uniform interface
rstan es)
unde roxi
p
retrieve information, possibly
GET cached
PUT Update or create with known ID
POST Create or append sub-resource
DELETE Logically remove
9. in
a llows s to
diarie hes,
terme d (cac
Uniform interface
rstan es)
unde roxi
p
check out the URL
retrieve/www.youtube.com/watch?
http:/ information, possibly
GET
v=oHg5SJYRHA0
cached
PUT Update or create with known ID
with method “WATCH”
POST Create or append sub-resource
DELETE Logically remove
10. Hypertext
Link the “things” / the resources
How?
<link rel="some-concept" ref="/some-uri">
h a rdc o de d i n c l ie n
t NOT h a rdc o de d i n c l ie n t
Why?
11. A special browser for each web site?
e.g. a Wikipedia browser that hardcodes
http:/ /en.wikipedia.org/wiki/{concept}
wikipedia amazon jugs.ch blogs nzz admin.ch search.ch infoq facebook gma
browser browser browser browser browser browser browser browser browser brows
12. A REST API must not define fixed
resource names or hierarchies (an obvious
coupling of client and server). Servers
must have the freedom to control their
own namespace.
14. Stateless communication
state is kept on the client, no ser ver-side application state
s c a la bil it y
requests are self-contained
r ie s
i n te r me di a
client server
GET /customer/1234/orders
<link rel=”...” ref=” /orders/123456789”></link>
update soft ware
reboot
POST /orders/123456789
15. RPC-style modelling vs.
REST-style modelling
/orders
GET - list all orders
m a ny ope rat io n s PUT - unused
POST - add new order
DELETE - unused
fe w i ns t ance s
at io n s
/orders/{id}
ope r
GET - get order details
fe w
PUT - update order
ance s
OrderManagementService POST - add item
ins t
DELETE - cancel order
m a ny
+ getOrders()
+ submitOrder()
/orders/{id}/submit
+ getOrderDetails()
GET - unused
+ getOrdersForCustomers()
<<interface>> PUT - unused
+ updateOrder()
Resource POST - submit order
+ addOrderItem()
GET DELETE - unused
+ cancelOrder()
PUT
POST /customers
DELETE GET - list all customers
CustomerManagementService PUT - unused
POST - add new customer
+ getCustomers() DELETE - unused
+ addCustomer()
+ getCustomerDetails()
/customers/{id}
+ updateCustomer()
GET - get customer details
+ deleteCustomer()
PUT - update customer
POST - unused
DELETE - delete customer
/customers/{id}/orders
GET - get all orders for customer
PUT - unused
POST - add order
DELETE - cancel all customer orders
18. The Internet vs. The Enterprise
One is a gigantic, uncontrollable anarchy of
heterogeneous systems with varying quality
that evolve independently and constantly get
connected in new and unexpected ways.
The other is a worldwide, publicly accessible
series of interconnected computer networks
that transmit data by packet switching using
the standard Internet Protocol (IP).
Stefan Tilkov - Pragmatic Introduction to REST
20. What’s Sling?
“Apache Sling is a RESTful web framework
that uses a Java Content Repository to
store and manage content.”just
g radu ate d
in Apache
incubator
21. What’s JCR?
“The API should be a standard,
implementation independent, way to
access content bi-directionally on a
granular level within a
content repository.” ?
22. Best of both worlds.
data base f il es ys te m
hier-
archi
integ
rity re es
structu
read streams
tx write access
query locking control
multi-
value
ning
obser- versio
un-structured
“full-text” sort vation
order
content repo sit or y
23. “Data First!” “s ch e m a le s s”
ak a
JCR s
“stru upports
cturef
irst” a
(but t
ha
well. s
t’s m
issing
the p
oint)
24. Known compliant Repositories
* using third party connector
* *
Exo Microsoft
Apache Jackrabbit Oracle XML DB ECMS Platform Sharepoint OpenText Livelink
*
Day CRX IBM FileNet P8 Xythos Repository Alfresco ECM Vignette V7
* *
any ors
ow mvend ?
H S ed
Interwoven +hund DBMou ne
R do y
r s
Repository IBM CM EMC Documentum regiede of TCKs
st
25. Some known JCR Applications
Fast
BEA Portal Sun Oracle Portal Enterprise Search
JBoss Portal Interface 21
OpenPortal
Day Communique Spring Framework
magnolia WCMS DAM
Apache Sling Day Communique
Alfresco ECMS Mindquarry Collab
Collaboration Apache Tapestry
QSLabs
Apache Compliance Day Communiqué
Cocoon WCMS IBM FileNet
Artifactory medic-2-medic WebSiteManager
Apache James Maven Proxy mapofmedicine
Exo
ECMS Platform TYPO3
GX WebManager v5.0 WCM
InfoQ Hippo Liferay
Nuxeo ECM Online Community CMS Enterprise Portal
Jahia Sakai
Percussion Framework E-learning
Rhythmix QuickWCM Sourcemix
WCMS Lutece Sourcemix
26. Some known JCR Applications
Fast
BEA Portal Sun Oracle Portal Enterprise Search
JBoss Portal Interface 21
OpenPortal
Day Communique Spring Framework
magnolia WCMS DAM
Apache Sling Day Communique
Alfresco ECMS Mindquarry Collab
Collaboration Apache Tapestry
QSLabs
Apache Compliance Day Communiqué
Cocoon WCMS IBM FileNet
Artifactory medic-2-medic WebSiteManager
Apache James Maven Proxy mapofmedicine
Exo
ECMS Platform TYPO3
GX WebManager v5.0 WCM
InfoQ Hippo Liferay
Nuxeo ECM Online Community CMS Enterprise Portal
Jahia Sakai
Percussion Framework E-learning
Rhythmix QuickWCM Sourcemix
WCMS Lutece Sourcemix
29. A node is a resource
GET /cars/audi/s4.txt
User-agent
Repository
30. A node is a resource
POST /cars/audi/s48
write
User-agent Your content
Repository is your web
server
31. Web apps and Sling scripting
/cars/audi/s4.details.html
User-agent
Repository
32. Web apps and Sling scripting
/cars/audi/s4.details.html
User-agent
Repository
d
1 file neede
Convention ove
configuration r
33. Web apps and Sling scripting
/cars/audi/s4.details.html
User-agent
Repository
.esp
.erb
.scala
34. Web apps and Sling scripting
URLsdo matter!
/cars/audi/s4.details.html
vs.
/product.jsp?id=/audi/s4
Passing in “this”
Addressing the (the resource)
“ cript”
s
36. Sling is OSGi-based
e
(not just “ nabled”)
Apache Felix
OSGi container
extensible my my
my
bundles bundles scripts
Sling Sling Sling
JCR
37. Sling is OSGi-based
e
(not just “ nabled”)
Apache Felix
OSGi container
extensible my my
my
bundles bundles scripts
modular Sling Sling Sling
JCR
hot deploy