java web services [5/5]: rest and jax-rs
DESCRIPTION
Presentations for Java Web Services Course, September 2010TRANSCRIPT
Assoc.Prof. Dr. Thanachart Numnondawww.imcinstitute.com
August 2010
Topic 5
REST and JAX-RS
2
Agenda
What is REST?
REST/HTTP Methods
JAX-RS
3
What is REST?
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’.
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 !
6
Architectural overview
7
Architectural overview
8
HTTP request overview
9
HTTP request overview
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
11
Resource
Collections– http://portal/books/
Members/Items:– http://portal/documents/mybook.doc
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
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
14
REST/HTTP Methods
15
CRUD to HTTP method mapping
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
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
18
HTTP Methods: GET
GET to retrieve information Retrieves a given URI Idempotent, should not initiate a state change Cacheable
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
20
HTTP Methods: DELETE
Remove (logical) an entity Example
– DELETE /songs/heyjude
Delete the song 'heyjude” from the system
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
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
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
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
25
JAX-RS
26
JAX-RS (JSR-311) : Goals
• POJO-based,
• HTTP-centric,
• Format independent,
• Container independent,
• Availability as standalone and enterprise platforms.
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
28
POJO + Annotation = JAX-RS resource
29
Reading the catalog
30
Reading the catalog item
31
Address-ability through HTTP Methods
• Methods: what are the HTTP methods?
• HTTP methods implemented as Java methods annotated with
– @POST– @GET – @PUT
– @DELETE
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 significantThe HTTP method is the method
33
Leading JAX-RS implementations
• Glassfish Jersey project
• RESTEasy(JBoss)
• Apache CXF (Apache Software Foundation)
• Wink (ASF incubation project)
• Restlet(NoeliosTechnologies)
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