Downloaded 108 times





![Routes
Mapping: Request -> Handler:
(defroutes app-routes
(context "/users" []
(GET "/new" [] accounts/show-signup)
(POST "/" [email] (accounts/new email)))
;; GET /users/new -> accounts/show-signup
;; POST /users/ -> accounts/new](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-6-320.jpg)
![Handlers
Request in, response out.
(defn say-hello [req]
(let [name (-> req :params :name)]
{:status 200
:body (str “Hello ” name “!”)}](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-7-320.jpg)
![Middleware
Transform: Handler -> New Handler
(defn wrap-failsafe [handler]
(fn [request]
(try (handler request)
(catch Exception e
(.printStackTrace e)
{:status 500
:body "An error occured."}))))](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-8-320.jpg)





This document discusses Clojure web development and describes a web-based project management system called Trakr that was created using Clojure. Trakr uses a MongoDB database and has a modern friendly UI. The architecture involves a Clojure HTTP server with a Ring middleware pipeline and Compojure routing to map requests to handlers. Testing is done with clojure.test and clojure.contrib.mock. Performance is around 70ms average latency.





![Routes
Mapping: Request -> Handler:
(defroutes app-routes
(context "/users" []
(GET "/new" [] accounts/show-signup)
(POST "/" [email] (accounts/new email)))
;; GET /users/new -> accounts/show-signup
;; POST /users/ -> accounts/new](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-6-320.jpg)
![Handlers
Request in, response out.
(defn say-hello [req]
(let [name (-> req :params :name)]
{:status 200
:body (str “Hello ” name “!”)}](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-7-320.jpg)
![Middleware
Transform: Handler -> New Handler
(defn wrap-failsafe [handler]
(fn [request]
(try (handler request)
(catch Exception e
(.printStackTrace e)
{:status 500
:body "An error occured."}))))](/proxy?url=https%3A%2F%2Fimage.slidesharecdn.com%2Ftrakr-110808084328-phpapp02%2F85%2FClojure-Web-Development-8-320.jpg)




