This document provides an overview of RESTful web services using Java. It defines REST as a design pattern for developing web services using existing standards like HTTP and URL. Key aspects of REST include being resource-based, stateless, and using a uniform interface. The document describes the client-server request-response model and standard HTTP methods. It provides examples of REST URIs and discusses Java standards like JAX-RS for building RESTful services. The document also compares REST to SOAP and covers Spring MVC support for building RESTful APIs.
2. REST
● REST stands for Representational State Transfer
-Design pattern for developing web services.
● Resource based
● Rest Style:
● Client-server
● Uniform interface
● Stateless
● Cached
● Layered system
● HATEOAS - (Hypermedia As The Engine Of Application State)
3. REST - not a Standard
● But it uses several standards:
o HTTP
o URL
o XML/HTML/GIF/JPEG/etc (Resource Representations)
o text/xml, text/html, image/gif, image/jpeg, etc (Resource Types, MIME Types)
Browser Web ServerGET /index.html HTTP/1.1
Host: www.pitt.edu
HTTP/1.1 200 OK
Content-Type:
text/html
4. HTTP Request
• The HTTP request is sent from the client.
– Identifies the location of a resource.
– Uses nouns rather than verbs to denote simple resources.
– Specifies the verb, or HTTP method to use when accessing the resource.
– Supplies optional request headers (name-value pairs) that provide additional
information the server may need when processing the request.
– Supplies an optional request body that identifies additional data to be
uploaded to the server (e.g. form parameters, attachments, etc.)
5. Sample Client Requests:
GET /view?id=1 HTTP/1.1 Request Headers
User-Agent: Chrome
Accept: application/json Requested Resource (path and query
string)
(no request body)
POST /save HTTP/1.1 Requested Resource (typically no query string)
User-Agent: IE
Content-Type: application/x-www-form-urlencoded Request Headers
name=x&id=2 Request Body (e.g. form parameters)
6. HTTP Response
• The HTTP response is sent from the server.
– Gives the status of the processed request.
– Supplies response headers (name-value pairs) that provide additional
information about the response.
– Supplies an optional response body that identifies additional data to be
downloaded to the client (html, xml, binary data, etc.)
– -HTTP Status codes(1xx, 2xx, 3xx, 4xx, 5xx)
7. Sample Server Responses:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1337
[CRLF]
<html>
<!-- Some HTML Content. -->
</html>
HTTP/1.1 500 Internal Server Error
HTTP/1.1 201 Created
Location: /view/7
[CRLF]
Some message goes here.
Response Status
Response Headers
Response Body (content)
Response Status
Response Header
Response Body
Response Status
8. Standard Set of Methods
● GET - read data and not change it.
● PUT - update capabilities
● POST - create subordinate resources
● DELETE - delete a resource
● OPTIONS - ‘What methods are allowed’
● HEAD - HTTP header
9. A typical HTTP REST URL:
http://my.store.com/fruits/list?category=fruit&limit=20
• The protocol identifies the transport scheme that will be used to
process and respond to the request.
• The host name identifies the server address of the resource.
• The path and query string can be used to identify and customize
the accessed resource.
protocol host name path to a resource query string
10. RESTful Application Cycle
Resources are identified by URIs
Clients communicate with resources via
requests using a standard set of methods
Requests and responses contain resource
representations in formats identified by
media types.
Responses contain URIs that link to further
resources
11. Examples of Rest URIs
Insert new customer in a system POST
http://www.example.com/customers/1234
5
Read a customer with customer
ID
GET
http://www.example.com/customers/3324
5
Read all orders with customer ID GET
http://www.example.com/customers/3324
5/orders
12. JAX-RS is a Java standard API for REST services:
• Services are annotation driven
• Provides support for data binding.(JAX-B)
• Provides advanced APIs for content negotiation.(@Produces/@Consumes)
13. SOAP vs. REST: Overview
Both SOAP and REST are front-end technologies.
SOAP – Simple Object Access Protocol
Supports a variety of transports (HTTP, JMS, etc.) and integrates with a variety of web service standards.
Typically used to pass contractually structured data between applications.
Bound to xml.
Uses SOAP envelope and then HTTP (or FTP/SMTP) to transfer the data.
Slower performance and scalability is a bit complex. Caching not possible.
14. REST - Representational State Transfer
Architectural style
Simple point-to-point communication using well-established HTTP verbs, protocols, and standards.
Supports many different data formats like JSON, XML etc.
Performance and scalability, caching.
Lightweight, easy to consume.
Widely and frequently used.
SOAP vs. REST: Overview
15. - XML-based protocol
- How to access the service and what operations are performed
Broadly consists of:
- Types
- Operation
- Binding
WSDL- Webservices Description Language
18. Restful Webservices
● A RESTful Web service follows four basic design principles:
o Uses HTTP methods
o Be stateless as far as possible
o Expose directory/folder structure-like URI
o Transfer XML, JSON, or both
19. Java API for RESTful Web Services (JAX-RS)
vs Spring MVC
Some Guidelines for choosing your solution:
• Both JAX-RS and Spring MVC can produce REST services.
• Spring MVC is a web application framework that can be used as service framework.
– Provides better validation
– Supports internationalization
• JAX-RS is a primarily a services framework.
– Provides support for WADL generation
– Can use CXF interceptors, filters, etc.
• Match the framework to the needs and purpose of the project.
• Don’t mix both in same web application unless you need unique features from each.
– If your project needs both, consider separate web applications.
21. RESTful support in Spring
● Controllers can handle requests for all HTTP methods, including the four primary REST methods: GET,
PUT, DELETE, and POST.
● The @PathVariable annotation enables controllers to handle requests for parameterized URLs (URLs
that have variable input as part of their path).
● Resources can be represented in a variety of ways using Spring views and view resolvers, including
View implementations for rendering model data as XML, JSON, Atom, and RSS.
The representation best suited for the client can be chosen using ContentNegotiatingViewResolver.
● View-based rendering can be bypassed altogether using the @ResponseBody annotation and various
HttpMethodConverter implementations.
● Similarly, the @RequestBody annotation, along with HttpMethodConverter implementations, can
convert inbound HTTP data into Java objects passed in to a controller’s handler methods.
● Spring applications can consume REST resources using RestTemplate
Agenda: Overview of REST architecture, Basics of HTTP, Implementation with Spring and examples.
CSS, Visibility, Scalability
Patch method – partial update
1
Traversing the response directory structure by asking specific information based on ID.
Why use JAX-RS. Comparisons with spring mvc implementation.
A client program connecting to a web service can read the WSDL to determine what functions are available on the server. Any special datatypes used are embedded in the WSDL file in the form of XML Schema. The client can then use SOAP to actually call one of the functions listed in the WSDL.