我已经将Compojure Leiningen模板与我的代码一起使用,但是现在我很难添加中间件。作为参考,这是默认项目:
(ns test.handler
(:require [compojure.core :refer :all]
[compojure.route :as route]
[ring.middleware.defaults :refer [wrap-defaults site-defaults]]))
(defroutes app-routes
(GET "/" [] "Hello World")
(route/not-found "Not Found"))
(def app
(wrap-defaults app-routes site-defaults))
我的代码在功能上没有偏离。
我想添加[bk/ring-gzip "0.3.0"]中间件。我了解这个概念,但无法找到扩展此配置的语法。
谢谢您的时间!
答案 0 :(得分:1)
bk / ring-gzip网站上的示例仅需稍作调整。从compojure返回的路由是一个处理程序;包装器获取处理程序并返回处理程序。如果您需要其他处理程序,则如果它们对请求或响应主体起作用,则应在gzip之前。
(def app (-> app-routes
(wrap-defaults site-defaults)
(wrap-gzip)))
通常最好使用线程宏形式,因为您可能要编写多个中间件,但是您可以只调用函数。