Clojure 如何使页面在url中显示为带或不带结尾斜杠?

Clojure 如何使页面在url中显示为带或不带结尾斜杠?,clojure,ring,noir,Clojure,Ring,Noir,我用黑色的 具有: (defpage "/welcome" [] "Welcome to Noir!") 我需要我使这两个URL都工作: http://localhost:8080/welcome http://localhost:8080/welcome/ 谢谢 编辑: 这是完整的答案 在server.clj中,添加(:使用[ring.util.response:only[redirect]]) 然后写: (defn wrap-slash "" [handler] (fn

我用黑色的

具有:

(defpage "/welcome" [] "Welcome to Noir!")
我需要我使这两个URL都工作:

http://localhost:8080/welcome 
http://localhost:8080/welcome/
谢谢

编辑: 这是完整的答案

server.clj
中,添加
(:使用[ring.util.response:only[redirect]])

然后写:

(defn wrap-slash 
  ""
  [handler]
  (fn [{:keys [uri] :as req}]
    (if (and (.endsWith uri "/") (not= uri "/"))
      (handler (assoc req :uri (.substring uri
                                0 (dec (count uri)))))
      (handler req))))

(server/add-middleware wrap-slash)

Noir的路线比其他一些路线更为严格,因此,看看哪一条路线虽然有不同的标题,但要求的是相同的东西。

Thnaks获得您的答案。另一个问题是关于重定向。当我键入…/welcome/时,我不希望URL在浏览器中更改为…/welcome。我只是希望两个网址可能和指向相同的内容。另一个问题的答案是否支持这一点?它似乎工作得非常完美!非常感谢。我在我的问题上做了一个编辑,将另一个问题的答案作为参考,并添加了如何使用它的上下文:
(服务器/add-middleware-wrap-slash)
。这在另一个答案中是缺乏的,或者至少,它不是明确的。。。