Features

Introduction

Restlet Framework is mature and scalable, based on a small core and many optional extensions, making it suitable for any kind of web API development, including cross-channel web sites and applications.

Web API support

Suitable for both client-side and server-side web applications. The innovation is that that it uses the same Java API, reducing the learning curve and the software footprint.

Concept of "URIs as UI" supported based on the URI Templates standard. This results in a very flexible yet simple routing with automatic extraction of URI variables into request attributes.

Tunnelling service lets browsers issue any HTTP method (PUT, DELETE, PATCH, etc.) through a simple HTTP POST. This service is transparent for Restlet applications.

Easy API documentation thanks to WADL support and Swagger integration.

Complete Web server

Contrary to the Servlet API, the Restlet API gives you extensive control on the URI mapping and on the virtual hosts configuration. It includes a powerful Directory class to server static files in a way similar to Apache Web Server. For example, our Restlet.com web site is directly powered by Restlet Framework on a regular JVM!

Here is a more complete list of features provided by the internal Web server:

Static file serving similar to Apache HTTP Server, with metadata association based on file extensions.

Transparent content negotiation based on client preferences.

Conditional requests automatically supported for resources.

Remote edition of files based on PUT and DELETE methods (aka mini-WebDAV mode).

Decoder service transparently decodes compressed or encoded input representations. This service is transparent for Restlet applications.

Log service writes all accesses to your applications in a standard Web log file. The log format follows the W3C Extended Log File Format and is fully customizable.

Powerful URI based redirection support similar to Apache Rewrite module.

Extensive and flexible security support for both authentication and authorization.

Presentation and persistence agnostic

By staying open to all presentation environments and technologies (AngularJS, Android, iOS, Eclipse RCP, GWT, etc.) and all persistence technologies (JDBC, Hibernate, Spring IO, Cassandra, MongoDB, etc.), your investment in Restlet is secured. With very little work, your Restlet applications can be made portable from one environment to the other.

Multiple editions

REST principles have no limit, they can be applied everywhere the Web is and even in places where there is no Internet but needs for communication or effective decoupling. Currently, the Restlet Framework is available in several editions:

Edition for Java SE, to run your Restlet applications in regular JVMs.

Edition for Java EE, to run your Restlet applications in Servlet containers.

Servlet compatible

Restlet was an attempt to build a better Servlet API, aligned with the true Web architecture (REST) and standards (HTTP, URI). Therefore the Restlet API has no dependency on the Servlet API, it only depends on the Java SE. However, it is perfectly possible to deploy a Restlet application into Java EE application servers or just Servlet containers. This is possible using an adapter Servlet provided as an extension.

Scalability

Intentional removal of Servlet-like HTTP sessions. This concept, attractive as a first sight, is one of the major issue for Servlet scalability and is going against the stateless exchanges promoted by REST.

Supports non-blocking NIO modes to decouple the number of connections from the number of threads.

Supports asynchronous request processing, decoupled from IO operations. Unlike the Servlet API, the Restlet applications don't have a direct control on the outputstream, they only provide output representation to be written by the server connector.

Upcoming features

Is something important for you missing? Maybe we are already working on
it or are planning to do so.