Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save greentornado/2d097d1adb4ef0f455e5004ac169cf38 to your computer and use it in GitHub Desktop.
Save greentornado/2d097d1adb4ef0f455e5004ac169cf38 to your computer and use it in GitHub Desktop.
Ring middleware fn. Removes a trailing slash from the uri before calling the handler.
(defn ignore-trailing-slash
"Modifies the request uri before calling the handler.
Removes a single trailing slash from the end of the uri if present.
Useful for handling optional trailing slashes until Compojure's route matching syntax supports regex.
Adapted from http://stackoverflow.com/questions/8380468/compojure-regex-for-matching-a-trailing-slash"
[handler]
(fn [request]
(let [uri (:uri request)]
(handler (assoc request :uri (if (and (not (= "/" uri))
(.endsWith uri "/"))
(subs uri 0 (dec (count uri)))
uri))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment