7
votes

Compojure Regex pour assortir une barre oblique

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. XXX

Quelle regex puis-je utiliser pour correspondre à une barre oblique de fuite optionnelle En Compojure?


0 commentaires

3 Réponses :


5
votes

la chaîne de chemin attendue par clout comme premier argument sur itinéraire n'est pas une regex, mais une chaîne pouvant contenir des mots-clés et le * < / Code> Wildcard.

Je pense que clout 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 Compojure (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. < Pré> xxx


1 commentaires

Ah, j'espérais éviter les middleware. Si c'est le seul moyen, alors d'accord.



1
votes

Voici une version condensée du middleware sans dépendances: xxx

correction de bugs modifie bienvenue.


0 commentaires

0
votes

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)))))


0 commentaires