[hunchentoot-devel] Middleware with Hunchentoot

Robert Uhl eadmund42 at gmail.com
Fri Jul 20 04:11:58 UTC 2007


>From Python's WSGI I've gotten the idea of middleware--that is, stuff
which runs around user-defined code in some user-defined order.  A
null-effect middleware function might be defined like this:

  (defun null-effect (request next)
    (when next
      (funcall next request)))

One can see how a middleware function could set things up for the
user-defined handler, could decide whether or not to call the user's
handler and could override whatever that handler returns.

A convenience macro def-middleware might make it possible to write the
null-effect function like this:

  (def-middleware null-effect (request)
    (call-next-middleware))

And the user might be able to create a dispatcher thus:

  (create-regex-dispatcher "/foo/bar?baz" (null-effect #'my-handler))

Obviously middleware could be chained:

  (create-regex-dispatcher "/foo/bar?baz"
                           (authentication (caching #'my-handler)))

Question: does this seem like a reasonable way to handle middleware,
particularly authentication/authorisation mechanisms?  I'm fairly new to
Lisp, but it _seems_ like it's a fairly Lispy way to go about things.

Thoughts?

-- 
Robert Uhl <http://public.xdi.org/=ruhl>
England really needs France around to provide comic relief.
             --Matt McLeod in comp.sys.mac.games.strategic




More information about the Tbnl-devel mailing list