调度 Clack 请求

因为 clack 请求表示为 plist,我们可以使用模式匹配作为 clack app 的入口点,作为将请求路由到其相应控制器的方法

(defvar *app*
  (lambda (env)
    (match env
      ((plist :request-method :get
              :request-uri uri)
       (match uri
         ("/" (top-level))
         ((ppcre "/tag/(\\w+)/$" name) (tag-page name)))))))

注意:要启动*app*,我们将其传递给 clackup。ej (clack:clackup *app*)