Topic 5

           REST and JAX-RS



Assoc.Prof. Dr. Thanachart Numnonda
       www.imcinstitute.com
            August 2010
Agenda
 What   is REST?
 REST/HTTP Methods

 JAX-RS




                             2
What is REST?




                3
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
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
Architectural overview




                         6
Architectural overview




                         7
HTTP request overview




                        8
HTTP request overview




                        9
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
Resource

 Collections
    – http://portal/books/
 Members/Items:
    – http://portal/documents/mybook.doc




                                           11
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
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
REST/HTTP Methods




                    14
CRUD to HTTP method mapping




                              15
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
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
HTTP Methods: GET
 GET to retrieve information
 Retrieves a given URI
 Idempotent, should not initiate a state change
 Cacheable




                                                   18
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
HTTP Methods: DELETE
 Remove (logical) an entity
 Example
     – DELETE /songs/heyjude



            Delete the song 'heyjude”
              from the system



                                        20
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
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
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
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
JAX-RS




         25
JAX-RS (JSR-311) : Goals

• POJO-based,
• HTTP-centric,
• Format independent,
• Container independent,
• Availability as standalone and enterprise platforms.



                                                         26
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
POJO + Annotation = JAX-RS resource




                                      28
Reading the catalog




                      29
Reading the catalog item




                           30
Address-ability through HTTP Methods

• Methods: what are the HTTP methods?
• HTTP methods implemented as Java methods
  annotated with
    –   @POST
    –   @GET
    –   @PUT
    –   @DELETE


                                             31
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
Leading JAX-RS implementations

• Glassfish Jersey project
• RESTEasy(JBoss)
• Apache CXF (Apache Software Foundation)
• Wink (ASF incubation project)
• Restlet(NoeliosTechnologies)


                                            33
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
Thank you

   thananum@gmail.com
www.facebook.com/imcinstitute
   www.imcinstitute.com



                                35

Java Web Services [5/5]: REST and JAX-RS

  • 1.
    Topic 5 REST and JAX-RS Assoc.Prof. Dr. Thanachart Numnonda www.imcinstitute.com August 2010
  • 2.
    Agenda  What is REST?  REST/HTTP Methods  JAX-RS 2
  • 3.
  • 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
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
    Everything is aresource …  A resource is … – A network-accessible data object or service identified by an URI: – Images, – Documents (HTML, PDF, …), – Geo-location, – Weather 10
  • 11.
    Resource  Collections – http://portal/books/  Members/Items: – http://portal/documents/mybook.doc 11
  • 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
  • 14.
  • 15.
    CRUD to HTTPmethod mapping 15
  • 16.
    CRUD Operations arePerformed 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
  • 25.
  • 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 throughURI • 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
  • 28.
    POJO + Annotation= JAX-RS resource 28
  • 29.
  • 30.
  • 31.
    Address-ability through HTTPMethods • Methods: what are the HTTP methods? • HTTP methods implemented as Java methods annotated with – @POST – @GET – @PUT – @DELETE 31
  • 32.
    Uniform interface: methodson 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
  • 33.
    Leading JAX-RS implementations •Glassfish Jersey project • RESTEasy(JBoss) • Apache CXF (Apache Software Foundation) • Wink (ASF incubation project) • Restlet(NoeliosTechnologies) 33
  • 34.
    Resources  Some contentsare 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 [email protected] www.facebook.com/imcinstitute www.imcinstitute.com 35