4. REST : Definition [Wikipedia]
Representational State Transfer
a style of software architecture for distributed
hypermedia systems such as the World Wide
Web.
was introduced and defined in 2000 by Roy
Fielding in his doctoral dissertation.
Conforming to the REST constraints is referred
to as being ‘RESTful’.
4
5. REST is ...
An architectural style, not technology
– Client/server + Request/response approach.
Everything is a RESOURCE.
CRUD (Create / Read / Update / Delete)
Stateless by nature (excellent for distributed
systems)
Cacheable (naturally supported !)
A great way to web-service !
5
10. Everything is a resource …
A resource is …
– A network-accessible data object or service
identified by an URI:
– Images,
– Documents (HTML, PDF, …),
– Geo-location,
– Weather
10
12. Characteristics of REST
RESTful services are stateless
– Each request from client to server must contain all
the information necessary to understand the
request
RESTful services have a uniform interface
– GET, POST, PUT, and DELETE.
REST-based architectures are built from resources
(pieces of information) that are uniquely identified by
URIs
– In a RESTful purchasing system, each purchase
order has a unique URI 12
13. Characteristics of REST
REST components manipulate resources by
exchanging representations of the resources
– For example, a purchase order resource can be
represented by an XML document.
– Within a RESTful purchasing system, a purchase
order might be updated by posting an XML
document containing the changed purchase order to
its URI
REST-based architectures communicate primarily
through the transfer of representations of resources
– State is maintained within a resource representation
13
16. CRUD Operations are Performed
through “HTTP
method”+“Resource”
CRUD Operations HTTP method Resource
Create (Single) POST Collection URI
Read (Multiple) GET Collection URI
Read (Single) GET Entry URI
Update (Single) PUT Entry URI
Delete (Single) DELETE Entry URI
16
17. HTTP Methods
/books/
– POST - submit a new book
– GET - list all books
/books/{isbn}/
– GET - get a book
– PUT - update a book
– DELETE - remove a book
17
18. HTTP Methods: GET
GET to retrieve information
Retrieves a given URI
Idempotent, should not initiate a state change
Cacheable
18
19. HTTP Methods: POST
POST to add new information
add the entity as a subordinate/append to the
POSTed resource
Example
– POST /music/beatles
Adds the music specified in the
POSTDATA to the
list of music
19
20. HTTP Methods: DELETE
Remove (logical) an entity
Example
– DELETE /songs/heyjude
Delete the song 'heyjude”
from the system
20
21. HTTP Methods: POST
POST to add new information
add the entity as a subordinate/append to the
POSTed resource
Example
– POST /music/beatles
Adds the music specified in the
POSTDATA to the
list of music
21
22. Why REST ?
• Uniformity:
– URI is a uniform way to identify resources
– HTTP uniform interface to manipulate resources
• REST base services are easy to work with
– Do not need specialized API, just need to
understand HTTP and browser for
experimentation
• Scripting language friendly
– Easy to consume and develop
22
23. Advantages of REST
• Its architectural constraints when applied as a
whole, generate:
– Scalable component interactions
– General interfaces
– Independently deployed connectors
– Reduced interaction latency
– Strengthened security
– Safe encapsulation of legacy systems
23
24. REST vs “Big” Web Services
• “Big” web service
– Few URIs (nouns), many custom methods
(verbs)
• musicPort.getRecordings(“beatles”)
– Uses HTTP as transport for SOAP messages
• RESTful web service
– Many resources (nouns), few fixed
methods(verbs)
• GET /music/artists/beatles/recordings
– HTTP is the protocol
24
26. JAX-RS (JSR-311) : Goals
• POJO-based,
• HTTP-centric,
• Format independent,
• Container independent,
• Availability as standalone and enterprise platforms.
26
27. JAX-RS: Address-ability through URI
• A Web service exposes data as resources
• A resource is exposed through a URI
• Resources are “plain old” Java classes and methods
• The annotation @Path exposes a resource
• Think resources and URIs using Java classes and
@Path
27
31. Address-ability through HTTP Methods
• Methods: what are the HTTP methods?
• HTTP methods implemented as Java methods
annotated with
– @POST
– @GET
– @PUT
– @DELETE
31
32. Uniform interface: methods on root
resources
@Path(“/books/”)
class books {
@POST <type> create(<type>) { ... }
@GET <type> get() { ... }
}
@Path(“/books/{isbn}/”)
class book {
@GET <type> get(...) { ... }
@PUT void update(...) { ... }
@DELETE void delete(...) { ... }
}
Java method name is not significant
The HTTP method is the method 32
34. Resources
Some contents are borrowed from the presentation
slides of Sang Shin, Java™ Technology Evangelist,
Sun Microsystems, Inc.
JAX-RS… and the REST will follow, Guy Nir, Java
Edge 09
34
35. Thank you
thananum@gmail.com
www.facebook.com/imcinstitute
www.imcinstitute.com
35