SlideShare a Scribd company logo
Restful Service with Java
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)
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
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.)
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)
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)
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
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
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
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
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
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)
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.
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
 - XML-based protocol
 - How to access the service and what operations are performed
 Broadly consists of:
 - Types
 - Operation
 - Binding
WSDL- Webservices Description Language
Connection point
Client-server response
Client-server request
WSDL Example

Name of the service
Parameter of the ws
Request-response operation
targetNamespace, default and
other namespaces
WSDL Example- contd.
 Define binding
transport
Endpoint URI
Connect port
and binding
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
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.
Spring mvc architecture
● Spring web MVC framework
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
Web.xml configuration
<servlet>
<servlet-name>AccountService</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
URI Mappings example
Content Negotiation
Content Negotiation using views
 DEMO
Next topics
- Securing Restful Services
- Open source frameworks JERSEY, RESTEASY
References
- Restful Webservice: Leonrard Richardson and Sam
Ruby//O’Reilly
- RESTful Web Services Cookbook: Subbu Allamraju//O’Reilly
- Roy Fieldings dissertation -
http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
- Spring in Action, 4th Edition, Craig Walls//Manning
Questions

More Related Content

What's hot (20)

ODP
RESTing with JAX-RS
Ezewuzie Emmanuel Okafor
 
PDF
Jersey and JAX-RS
Eduardo Pelegri-Llopart
 
PDF
So various polymorphism in Scala
b0ris_1
 
PPTX
RESTEasy
Khushbu Joshi
 
PPTX
REST & RESTful Web Service
Hoan Vu Tran
 
PDF
REST API Recommendations
Jeelani Shaik
 
PPT
RESTful services with JAXB and JPA
Shaun Smith
 
KEY
Designing a RESTful web service
Filip Blondeel
 
PPTX
Restful webservice
Dong Ngoc
 
PPT
Easy rest service using PHP reflection api
Matthieu Aubry
 
PDF
Consuming RESTful services in PHP
Zoran Jeremic
 
PPT
Introduction to JAX-RS
Andreas Bjärlestam
 
PDF
RESTful http_patterns_antipatterns
Jan Algermissen
 
PPTX
RESTful Web Services
Martin Necasky
 
ODP
Things I wish web graduates knew
Lorna Mitchell
 
PDF
RESTEasy
Massimiliano Dessì
 
PDF
RESTful Web Services
Christopher Bartling
 
PPTX
ASP.NET WEB API
Thang Chung
 
PDF
Web services tutorial
Lorna Mitchell
 
PDF
Web services in PHP using the NuSOAP library
Fulvio Corno
 
RESTing with JAX-RS
Ezewuzie Emmanuel Okafor
 
Jersey and JAX-RS
Eduardo Pelegri-Llopart
 
So various polymorphism in Scala
b0ris_1
 
RESTEasy
Khushbu Joshi
 
REST & RESTful Web Service
Hoan Vu Tran
 
REST API Recommendations
Jeelani Shaik
 
RESTful services with JAXB and JPA
Shaun Smith
 
Designing a RESTful web service
Filip Blondeel
 
Restful webservice
Dong Ngoc
 
Easy rest service using PHP reflection api
Matthieu Aubry
 
Consuming RESTful services in PHP
Zoran Jeremic
 
Introduction to JAX-RS
Andreas Bjärlestam
 
RESTful http_patterns_antipatterns
Jan Algermissen
 
RESTful Web Services
Martin Necasky
 
Things I wish web graduates knew
Lorna Mitchell
 
RESTful Web Services
Christopher Bartling
 
ASP.NET WEB API
Thang Chung
 
Web services tutorial
Lorna Mitchell
 
Web services in PHP using the NuSOAP library
Fulvio Corno
 

Similar to Restful web services with java (20)

PPTX
RESTful web services using java and spring
Muhammad Junaid Ansari
 
PPTX
6 Months Industrial Training in Spring Framework
Arcadian Learning
 
PPTX
Restful web services
Surinder Mehra
 
PPT
ROA.ppt
KGSCSEPSGCT
 
PPTX
Overview of java web services
Todd Benson (I.T. SPECIALIST and I.T. SECURITY)
 
PPTX
ASP.NET Mvc 4 web api
Tiago Knoch
 
PDF
The introduction of RESTful
Jon Chen
 
PPTX
Mini-Training: Let's have a rest
Betclic Everest Group Tech Team
 
PPTX
Learn REST API at ASIT
ASIT
 
PPT
Ch-1_.ppt
berihunmolla2
 
PPT
REST Introduction.ppt
KGSCSEPSGCT
 
PDF
REST - Representational State Transfer
Peter R. Egli
 
PDF
Rest web service
Hamid Ghorbani
 
ODP
PHP Training: Module 1
hussulinux
 
PPTX
Efficient Spring Data REST Development
Catalin Tudose
 
PPTX
Restful Fundamentals
Suresh Madhra
 
PPTX
Restful Fundamentals
Suresh Madhra
 
PPTX
ASP.NET WEB API Training
Chalermpon Areepong
 
ODP
SCDJWS 6. REST JAX-P
Francesco Ierna
 
PDF
HTTP In-depth
Vinayak Hegde
 
RESTful web services using java and spring
Muhammad Junaid Ansari
 
6 Months Industrial Training in Spring Framework
Arcadian Learning
 
Restful web services
Surinder Mehra
 
ROA.ppt
KGSCSEPSGCT
 
ASP.NET Mvc 4 web api
Tiago Knoch
 
The introduction of RESTful
Jon Chen
 
Mini-Training: Let's have a rest
Betclic Everest Group Tech Team
 
Learn REST API at ASIT
ASIT
 
Ch-1_.ppt
berihunmolla2
 
REST Introduction.ppt
KGSCSEPSGCT
 
REST - Representational State Transfer
Peter R. Egli
 
Rest web service
Hamid Ghorbani
 
PHP Training: Module 1
hussulinux
 
Efficient Spring Data REST Development
Catalin Tudose
 
Restful Fundamentals
Suresh Madhra
 
Restful Fundamentals
Suresh Madhra
 
ASP.NET WEB API Training
Chalermpon Areepong
 
SCDJWS 6. REST JAX-P
Francesco Ierna
 
HTTP In-depth
Vinayak Hegde
 
Ad

Recently uploaded (20)

PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PPTX
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
PPTX
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PPT
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
PDF
Executive Business Intelligence Dashboards
vandeslie24
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Platform for Enterprise Solution - Java EE5
abhishekoza1981
 
Import Data Form Excel to Tally Services
Tally xperts
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
Executive Business Intelligence Dashboards
vandeslie24
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Ad

Restful web services with java

  • 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
  • 16. Connection point Client-server response Client-server request WSDL Example  Name of the service Parameter of the ws Request-response operation targetNamespace, default and other namespaces
  • 17. WSDL Example- contd.  Define binding transport Endpoint URI Connect port and binding
  • 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.
  • 20. Spring mvc architecture ● Spring web MVC framework
  • 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
  • 27. Next topics - Securing Restful Services - Open source frameworks JERSEY, RESTEASY
  • 28. References - Restful Webservice: Leonrard Richardson and Sam Ruby//O’Reilly - RESTful Web Services Cookbook: Subbu Allamraju//O’Reilly - Roy Fieldings dissertation - http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm - Spring in Action, 4th Edition, Craig Walls//Manning

Editor's Notes

  • #2: Agenda: Overview of REST architecture, Basics of HTTP, Implementation with Spring and examples.
  • #3: CSS, Visibility, Scalability
  • #9: Patch method – partial update
  • #11: 1
  • #12: Traversing the response directory structure by asking specific information based on ID.
  • #13: Why use JAX-RS. Comparisons with spring mvc implementation.
  • #16: 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.
  • #25: Suffix: http://example/myapp/accounts/list.html Parameter: http://myserver/myapp/accounts/list?format=xls