There are several data-driven routing libraries for Ring, such as bidi, Silk and gudu. Ataraxy differs from them because it not only seeks to match a route, it also destructures the incoming request.

In this sense it is similar to Compojure, in that the idea is to remove extraneous information. However, while Compojure is designed to use chains of functions, Ataraxy defines its functionality through a declarative data structure.

When something goes wrong, Ataraxy returns one of the following error results:

:ataraxy.error/unmatched-path

:ataraxy.error/unmatched-method

:ataraxy.error/missing-params

:ataraxy.error/missing-destruct

:ataraxy.error/failed-coercions

:ataraxy.error/failed-spec

If you're using the ataraxy.core/handler function, these are automatically converted into appropriate Ring response maps. However, it's generally worth customizing the error responses to the needs of your application.