我正在构建一个测试Clojure/Ring项目以了解其工作原理。我创建了一个名为“junkapp”的应用程序,它只有一个处理程序。
(defn handler [request]
{:status 200
:headers {"Content-type" "text/html"}
:body "Hello World"})
同时还需要进行一次 wrap-resource 的调用来处理静态内容
(def app
(wrap-resource handler "public"))
因此,在我的project.clj文件中,我引用了lein-ring,并将:handler设置为my junkapp.core/app。
:plugins [[lein-ring "0.8.5"]]
:ring {:handler junkapp.core/app}
当我使用“lein run”运行时,一切都按预期工作。对“/”的调用会返回“Hello World”,对“/test.html”的调用会返回resources/public/test.html的内容。
但是,当我尝试将其构建为war文件时……
lein ring uberwar junkapp.war
将它放在 Tomcat7 服务器的 webapps/ 目录下。现在,当我访问 junkapp 下的任何路径 (如 /junkapp/, /junkapp/foo, /junkapp/test.html),它总是返回 "Hello World",而我似乎无法让它引用静态内容。在谷歌搜索时,我看到有人只是说要使用 compojure.route/resources,但由于我正在学习,我希望它能像这样工作,然后再添加更多库。这里发生了什么事?