REST Web services
REST - Representational State
Transfer
What is REST:
REST
is an architectural style which is based on web-standards and the HTTP
protocol. REST was first described by Roy Fielding in 2000.
In
a REST based architecture everything is a resource. A resource is accessed via
a common interface based on the HTTP standard methods.
In
a REST based architecture you typically have a REST server which provides
access to the resources and a REST client which accesses and modifies the REST
resources.
Every
resource should support the HTTP common operations. Resources are identified by
global IDs (which are typically URIs).
REST
allows that resources have different representations, e.g., text, XML, JSON
etc. The REST client can ask for a specific representation via the HTTP
protocol (content negotiation).
HTTP methods
The PUT, GET, POST and DELETE methods are typical used in REST based
architectures.
The
following table gives an explanation of these operations.
· GET defines a
reading access of the resource without side-effects. The resource is never changed
via a GET request, e.g., the request has no side effects (idempotent).
· PUT creates a new
resource. It must also be idempotent.
· DELETE removes the
resources. The operations are idempotent. They can get repeated without leading
to different results.
· POST updates an
existing resource or creates a new resource.
RESTFul web services
A
RESTFul web services are based on HTTP methods and the concept of REST. A
RESTFul web service typically defines the base URI for the services, the
supported MIME-types (XML, text, JSON, user-defined, ...) and the set of
operations (POST, GET, PUT, DELETE) which are supported.
JAX-RS with Jersey
JAX-RS:
Java
defines REST support via the Java
Specification Request (JSR) 311.
This specification is called JAX-RS (The Java API for RESTful Web Services).
JAX-RS uses annotations to define the REST relevance of Java classes.
Jersey
Jersey is the reference implementation for the JSR
311 specification.
The
Jersey implementation provides a library to implement Restful webservices in a
Java servlet container.
On the
server side Jersey provides a servlet implementation which scans predefined
classes to identify RESTful resources. In your
web.xml
configuration file your register this
servlet for your web application.
The
Jersey implementation also provides a client library to communicate with a
RESTful webservice.
The
base URL of this servlet is:
http://your_domain:port/display-name/url-pattern/path_from_rest_class
This
servlet analyzes the incoming HTTP request and selects the correct class and
method to respond to this request. This selection is based on annotations in
the class and methods.
A REST
web application consists, therefore, out of data classes (resources) and
services. These two types are typically maintained in different packages as the
Jersey servlet will be instructed via the
web.xml
to scan certain packages for data classes.
JAX-RS
supports the creation of XML and JSON via the Java Architecture for XML Binding
(JAXB).
No comments:
Post a Comment