路由的Compojure / Clojure错误

时间:2014-02-24 09:15:09

标签: redirect clojure routes compojure ring

我正在使用Clojure / ring / compojure创建一个web应用程序,但我遇到了路由问题。我有两个文件:web.clj和landing.clj。我想将导航到uri的用户从web.clj处理程序路由到landing.clj,并调用home函数,这将呈现我的应用程序的首页。我不能为我的生活似乎弄乱语义,请帮忙。我阅读的文档假设了很多web-dev知识而且我是初学者。当我从Leiningen运行本地服务器时,我现在在浏览器中收到404错误消息。我知道它正在通过landing.clj文件中的defroutes,因为当我加载http://0.0.0.0:5000/landing时地址栏显示http://0.0.0.0:5000

这是我的web.clj文件的代码,该文件成功重定向到landing.clj文件:

  (defroutes app
  (ANY "/repl" {:as req}
       (drawbridge req))
  (GET "/" [] (redirect "landing")) ;; come fix this later
  (ANY "*" []
       (route/not-found (slurp (io/resource "404.html")))))

这是来自landing.clj文件,错误位于GET "/"函数的某处:

(defroutes app
  (GET "/" []
       {:status 200
        :headers {"Content-Type" "text/html"}
        :body (home)})
  (POST "/" [weights grades] ((process-grades (read-string weights) (read-string grades)) ))
  (ANY "*" []
       (route/not-found (slurp (io/resource "404.html")))))

1 个答案:

答案 0 :(得分:2)

以下表达似乎有额外的括号:

(POST "/" [weights grades] ((process-grades (read-string weights) (read-string grades)) ))

应该是:

(POST "/" [weights grades] (process-grades (read-string weights) (read-string grades)) )