20 July 2006
Developing RESTful Web Services in Java
When you think of Web services, SOAP immediately comes to your mind. Not any more! Thanks to REST, there is a simpler way to develop web services. While SOAP is well established with most vendors supporting it, REST is really catching up.
Representational State Transfer (REST) is an architectural style for distributed hypermedia systems. REST relies on a single application protocol (HTTP), universal resource indicators (URI) and standardized data formats, through XML. It employs established HTTP methods such as GET and POST to direct applications.
I’m not attempting to explain the concept of REST, there are already enough stuff all over the Internet. You may have noticed that most of the Internet giants offer their services as REST web services. They may be good APIs but not RESTful.
What is not REST?
- APIs that involve Plain Old XML over HTTP are not necessarily REST.
- Using GET for all operations - including insert, updates etc is not REST
Creating a new Person resource:
GET myhost/api?action=create&item=person&name=mano |
Incorrect |
POST myhost/api/person |
Correct |
- Not having distinct URI for first class objects is also a violation of the REST way.
Retrieving a Person resource
GET myhost/api?item=person&id=202 |
Incorrect |
GET myhost/api/person/202 |
Correct |
A RESTful service has use http methods such as POST, GET, PUT and DELETE to achieve the basic CRUD operations (create, read, update, and delete). All resources are identified using distinct URIs.
Framework in Java
I found Restlet to be a good framework. Restlet ensures that your application can easily be developed in a RESTful manner. Each concept of REST has a corresponding Java interface or class in the Restlet API. Another advantage is the ability to work with multiple protocols (HTTP, JDBC, SMTP, etc.) using the exact same API.
However, I could not find a good example for restlet + spring + tomcat integration, I took the liberty of writing one. You can download the restdemo application here. Just run ant, drop the WAR in your webapps folder - you are all set.
Technorati Tags: rest, web service, java
Comments are locked.
Vinny Carpenter’s blog · Daily del.icio.us for Jul 24, 2006 says:
live craps gambling money says:
This is a great page. And the contents are really that worth reading. I will add this to my own library


[…] ALTERthought Blogs ยป Developing RESTful Web Services in Java This application is a simple example on developing RESTful web services in Java by using a open source framework, Restlet with Spring. (tags: spring rest restlet WebServices java j2ee example) […]