2013-04-26 2 views
3

Я пытаюсь создать маршрут, который имеет параметр, который содержит запятые в compojureЗапятые в Compojure маршруты

(GET "/tags/multiple/:tag-names" [tag-names] multiple-tags) 

, но по какой-то причине, когда я запятую в :tag-names поле, это 404-х. Он отлично работает, когда нет запятых.

Кто-нибудь знает, что вызывает это и как я могу обойти его?

+0

Вы используете compojure 'Andler/api' или' обработчик/site' маршрутизировать запрос? –

ответ

4

Compojure использует clout для маршрутизации. От cloutREADME:

Clout поддерживает как ключевые слова, так и подстановочные знаки. Ключевые слова (например, :title) будут соответствовать любому символу, но следующие: / . , ; ?.

По умолчанию clout рассматривает запятые как разделители сегментов пути. Вы можете обойти это, передав обычное регулярное выражение на маршрут. Следующий бы :tag-names соответствует любому символу, кроме /:

(GET ["/tags/multiple/:tag-names" :tag-names #"[^/]+"] [tag-names] multiple-tags)