С Compojure существует ли способ перенаправления на один из определенных маршрутов, кроме необходимости форматировать URL-адрес запроса?Compojure - избегать «ручной» форматирования URL-адресов при использовании перенаправления
Например, в следующей упрощенной defroutes
декларации:
(defroutes app-routes
; ...
(GET "/something-that-may-redirect" [query-param]
; parse `query-param` into `arg1` and `arg2` and:
(ring.util.response/redirect (format "/another-route?param1=%s¶m2=%s" arg1 arg2))
(GET "/another-route" [param1 param2] ...)
; ...
Здесь я должен форматировать URL для перенаправления (и обычно также имеет дело с побегом), для того, чтобы этот URL, чтобы быть впоследствии проанализирован самой Compojure и извлечь значения для param1
и param2
.
Итак, вопрос в том, есть ли подход к перенаправлению и позволить Compojure форматировать URL-адрес запроса, зная, что он уже имеет информацию о аргументах? Что-то же просто, как:
(redirect "/another-route" arg1 arg2)
который будет форматировать URL-адрес itlsef в:
"/another-route?param1=[value of arg1]¶m2=[value of arg2]"
P.S. Сама идея это не ново, конечно. Некоторые другие веб-структуры имеют схожие черты - например, с веб-рамки Колба Пайтона можно использовать url_for создать хорошо отформатированный и сбежавшего URL из базового пути и значений параметров запроса:
# for example, in Python's Flask framework
url_for('route-name', param1='value1', param2='value2')
Я не понимаю, что вы означает «parse query-param» в arg1 и arg2 ». Вы деструктурируете/path? Query-param = x в x, какой синтаксический анализ вам нужен? –
Да, я не говорю о разборе - речь идет о форматировании. – Timur
Не можете ли вы просто взять всю строку запроса и выполнить '(str"/another-route? "Query-string)'? –