Clojure Compojure:嵌套路由问题
我正在尝试在应用程序中设置路由,以便:Clojure Compojure:嵌套路由问题,clojure,compojure,Clojure,Compojure,我正在尝试在应用程序中设置路由,以便: /:locale/->Home,带有区域设置绑定 /:区域设置/搜索->搜索, 使用区域设置绑定 到目前为止,我的路由代码是: (defn controller-routes [locale] (home/c-routes locale) (search/c-routes locale))) (defroutes app-routes (route/resources "/") (context "/:locale" [locale
- /:locale/->Home,带有区域设置绑定
- /:区域设置/搜索->搜索, 使用区域设置绑定
(defn controller-routes [locale]
(home/c-routes locale)
(search/c-routes locale)))
(defroutes app-routes
(route/resources "/")
(context "/:locale" [locale]
(controller-routes locale))
no-locale-route
(route/not-found "Not Found"))
搜索/c-路线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
主/主航线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
我不明白为什么这不能正常工作,但目前“/uk/search/”匹配正确,但“/uk/”给出了404页面
任何帮助都将不胜感激。谢谢。
控制器路由
是一个正常的功能,它现在返回最后一条路由,即搜索,因此仅搜索有效。您需要的是使用defroutes
将controller routes
设置为一条路由,并更改c-路由:
搜索/c-路线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
主/主航线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
使用上述路线时:
(defroutes controller-routes
home/c-routes
search/c-routes)
(defroutes app-routes
(route/resources "/")
(context "/:locale" [locale]
controller-routes)
no-locale-route
(route/not-found "Not Found"))
控制器路由
是一个正常的函数,它现在返回最后一条路由,即搜索,因此只有搜索起作用。您需要的是使用defroutes
将controller routes
设置为一条路由,并更改c-路由:
搜索/c-路线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
主/主航线:
(defn c-routes [locale]
(GET "/search" [] (index locale)))
(defn c-routes [locale]
(GET "/" [] (index locale)))
(def c-routes (GET "/search" [locale] (index locale)))
(def c-routes (GET "/" [locale] (index locale)))
使用上述路线时:
(defroutes controller-routes
home/c-routes
search/c-routes)
(defroutes app-routes
(route/resources "/")
(context "/:locale" [locale]
controller-routes)
no-locale-route
(route/not-found "Not Found"))
很有魅力-谢谢。两个c-routes都应该是defroutes,对吗?
defroutes
是在一个处理程序中组成多个路由,即其中一个处理程序将成功,c-routes是使用GET
定义的单独处理程序,但是,当您编写它们时,您将使用defroutes
,就像在控制器路由的情况下所做的那样,我看到了。但是如果我想在我的c路线中有多条路线呢?我可以用一个列表来包装它们吗?然后你需要像使用符咒一样使用defrouteworks-谢谢。两个c-routes都应该是defroutes,对吗?defroutes
是在一个处理程序中组成多个路由,即其中一个处理程序将成功,c-routes是使用GET
定义的单独处理程序,但是,当您编写它们时,您将使用defroutes
,就像在控制器路由的情况下所做的那样,我看到了。但是如果我想在我的c路线中有多条路线呢?我可以用一个列表来包装它们吗?然后你需要使用defroutes