Hi, I'm using Spiffy and setting handle-not-found in an attempt to use
Spiffy like a generic URL-based dispatcher.  For example, when the user
requests /foo/bar I want to send back the result of calling function x,
and when the user requests /asdf/jkl I want to send back the result of
calling function y:

(handle-not-found
  (lambda (path)
    (log-to (debug-log) "REQUEST: ~s" path)
    (cond ((string=? uri "/foo/bar")
           (x))
          ((string=? uri "/asdf/jkl")
           (y))
          (else
           (handle-other)))))

The Spiffy documentation says about the value of handle-not-found: "It
is a procedure of one argument, the path (a string) that was requested."
However, it seems that the actual argument is the path, up until the
first component which was not found. If root-path does not exist, path
is always "/". If root-path does exist, but neither "foo" nor "asdf"
exist within it, then path is always "/foo" or "/asdf". That's what it
seems to be, anyway; is that the correct behaviour? It seems to be
slightly different from what the documentation says, since it is not
necessarily the requested path.

In the meantime I've been using this code as a workaround to get what I
want regardless of the existence of files in the path:

(string-join (cdr (uri-path (request-uri (current-request)))) "/" 'prefix)

Thanks for the clarification,

-- 
Taylor Venable
http://metasyntax.net/



_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to