【发布时间】:2022-02-07 19:18:45
【问题描述】:
这个想法是在路由匹配时调用某个函数。该函数具有依赖项。我是 clojure 和 compojure 的新手,这种方法可能是错误的。 但是,这仍然是我努力实现的目标。
(defroutes my-routes (GET "/user/list"
[]
(list-users)) ; where list-users is for example (partial list-users user-service)
由于我没有找到使用defroutes 的方法,因此我尝试“动态”设置路线。
(defn define-routes [services]
(routes
(GET "/user/:id"
[id]
((:show-user services) id))
(GET "/user/list"
[]
((:list-users services))))
当我使用这样定义的路线启动码头时,
(defn app [services]
(j/run-jetty (define-routes services) {:port 3000 :join? false}))
每次调用都会导致异常:
java.lang.NullPointerException: Response map is nil
有没有办法使用defroutes和调用函数来注入依赖项,或者可以按照我尝试的方式进行操作,但我做错了?
【问题讨论】:
标签: dependency-injection routes clojure compojure