Compojure: как сопоставить параметры запроса

Я пытаюсь заставить любое из следующих отображений работать для отображения http://mysite.org/add?http://sitetoadd.com или http://mysite.org/add?u=http://sitetoadd.com

  (GET "/add?:url" [url] url)
  (GET "/add?u=:url" [url] url)
  (GET "/add" {params :params} (params :u))
  (GET "/add" {params :params} (params "u"))
  (GET "/add" [u] u)

Но это просто не работает, и я не знаю почему. С другой стороны, это работает:

  (GET "/add/:url" [url] url)

но я не могу использовать его, потому что мне нужно передать url, а http://mysite.org/add/http://sitetoadd.com недействителен, в то время как http://mysite.org/add?http://sitetoadd.com в порядке.

EDIT: сбросив request, я увидел, что params пуст. Я думал, что он будет содержать параметры POST и GET, но единственное место, где я могу найти передаваемые параметры, находится в :query-string ("u=asd"). кажется, что для разбора строк запроса необходимо промежуточное ПО. Кстати, мой вопрос остается в силе.

11
задан Community 23 May 2017 в 12:34
поделиться