Peut-être que je suis juste un idiot, mais je ne peux pas mettre en place une correspondance pour une barre oblique finale en clojure. Quelle regex puis-je utiliser pour correspondre à une barre oblique de fuite optionnelle En Compojure? p> p>
3 Réponses :
la chaîne de chemin attendue par Je pense que clout code> comme premier argument sur itinéraire code> n'est pas une regex, mais une chaîne pouvant contenir des mots-clés et le * < / Code> Wildcard. clout code> ne prend pas de manière native la définition des itinéraires qui ignorent une barre oblique de fuite. Vous pouvez résoudre le problème avec une fonction middleware qui supprime des barres obliques. Les fonctions suivantes ont été extraites d'une ancienne version du code source code> Compojure Code> (avant le grand refactoring), je ne pouvais pas savoir si elles se sont déplacées dans un nouvel endroit. Voici le Engagez d'origine qui introduisait ces fonctions. P> < Pré> xxx pré> p>
Ah, j'espérais éviter les middleware. Si c'est le seul moyen, alors d'accord.
Voici une version condensée du middleware sans dépendances: correction de bugs modifie bienvenue. p> p>
Pour ceux qui recherchent une solution compressée MÊME EM> plus EM> plus EM> :)
(defn- with-ignore-trailing-slash [handler]
(fn [request]
(let [uri (request :uri)
clean-uri (str/replace uri #"^(.+?)/+$" "$1")]
(handler (assoc request :uri clean-uri)))))