Overview

GeoServer uses a library known as Restlet for all REST related functionality. Restlet is a lightweight rest framework written in Java that integrates nicely with existing servlet based applications.

REST dispatching

In GeoServer, all requests under the path /rest are considered a call to a restful service. Every call of this nature is handled by a rest dispatcher. The job of the dispatcher is to route the request to the appropriate end point. This end point is known as a restlet.

../../_images/rest-dispatch.png

Restlets are loaded from the spring context, and therefore are pluggable.

Restlets

A restlet is the generic entity which handles calls routed by the dispatcher, and corresponds to the class org.restlet.Restlet. One can extend this class directly to implement a service endpoint. Alternatively one can extend a subclass for a specialized purpose. Namely a finder, which is described in the next section.

Finders and resources

Restful services are often implemented around the concept of resources. A finder is a special kind of restlet whose job is to find the correct resource for a particular request. The resource then serves as the final end point and handles the request. The appropriate classes from the restlet library are org.restlet.Finder and org.restlet.resource.Resource.

Representations

A representation, commonly referred to as a format, is the state of a particular state or encoding of a resource. For instance, when a request for a particular resource comes in, a representation of that resource is returned to the client.