REST Web services resources for Java developers

Representational State Transfer (REST) is an architectural style for creating, maintaining, retrieving, and deleting resources. REST's information-driven, resource-oriented approach to building Web services can both satisfy your software's users and make your life as a developer easier.

via javaworld.com

REST Introduction

- The father of REST, Roy Fielding, dissertation on "Architectural Styles and the Design of Network-based Software Architecture"

Why REST?

- For more resources see REST Wiki, including the REST in plain English article.

Building REST Services

RESTful Service

Building Web services the REST way

Build a RESTful Web service

REST related Design Issues

Versioning REST services

Common REST mistakes

PUT or POST: the REST of the story, or see also the interesting interview with Elliotte Rusty Harold

- Asynchronous REST or Slow REST

- Instead of returning a custom object we could use the Content-Location header for the in-progress status URI of the requested operation. This URI could also use headers to provide information regarding the in-progress operation:

- Status-Code: "202 in progress" or "204 No Content" when completed or any error code

- ETag: for the operation progress status. Could be strong and still give a notion of progress

REST for Java Developers (via javaworld.com)

- Part 1 - it's about the information, stupid

- Part 2 - Restlet for the weary

- Part 3 - NetKernel

- Part 4 - The future is RESTful

REST Libraries

- Notes: 

- All of them are supporting JAX-RS, aka JSR-311, the Java API for RESTful Web Services

- And here is good presentation of JAX-RS

Restlet project

This is my favorite library, and I like the fact that it is running on GAE/J and supporting GWT

RESTEasy from JBoss.org

Jersey part of Sun's GlassFish project

CXF from Apache.org

- REST Libraries usage trend:

JAX-RS Implementations

Via GoogleVolume.com

Tools

RESTY is a simple cURL-based command line tool

rest-client is a Java-based GUI and command line tool

HTTP4E is an Eclipse HTTP client

 

Update 1: Added a libraries and tools sections.

Update 2: Added a section on design issues related to building REST services