Liberator

Sign up for weekly Clojure tips, software design, and a Clojure coding challenge.

Reference: Liberator

Writing HTTP compliant servers is hard in any language. There is a lot to do for each request: content type negotiation, handling the wide variety of problems with requests, and the rest of the HTTP spec goodness. Usually, we just ignore it and simplify down to three types of responses: 200 Ok and 404 Not Found and 500 Server Error. There is a lot more to the spec than this, but it often costs more to implement it correctly than to stick with this limited set of statuses.

Liberator looks like it might have found the leverage point between navigating the essential complexity of HTTP and managing the requirements of your server.

Two things look promising:

  1. There seems to be a lot of potential for reuse. That means you can
    decide server-wide policies instead of per-handler policies.

  2. Behavior can change incrementally. You can still get up and running
    using the defaults and adapt the server's behavior to suit the problem
    later.

I look forward to trying it out.