以下组件路线有效。
(defroutes app-routes
(GET "/" [] (index))
(GET "/twauth" [] (tw/authorize))
(ANY "/twcallback" [] (do
(tw/callback)
(index)))
(route/resources "/")
(route/not-found "Not Found"))
(def app (handler/site app-routes))
但是我收到以下错误。它抛出一个java.nullpointer.exception。我在这里做错了什么?
(defroutes app-routes (获取“/”[](索引)) (获取“/ twauth”[](tw / authorize)) (任何“/ twcallback”[](做 (TW /回调) (索引))))
(defroutes base-routes
(route/resources "/")
(route/not-found "Not Found"))
(def app
(-> app-routes
base-routes
handler/site))
答案 0 :(得分:1)
您的基本路由匹配所有请求。我认为以下说明更好:
(defroutes base-routes
(route/not-found "Not found"))
(def app
(-> app-routes
base-routes
handler/site))
无论你在上面的app-routes中做了什么,都会检查base-routes并且总是返回not-found。请注意,每个请求都穿过两个路径,而不是首先匹配胜利。
因此,您需要将基本路由移动到您的应用路由中作为后备 - 就像您在工作示例中已经做过的那样 - 或者在app中撰写它们:
(def app
(-> (routes app-routes base-routes)
handler/site))
这里组合的路线确保第一场比赛获胜。