2015-08-29 4 views

ответ

5

compojure обработчики получить всю карту запрос в качестве аргумента, поэтому обработчик имеет также доступ ко всем параметрам. Например, чтобы увидеть весь запрос:

(POST "/" request 
    (str request)) 

или, чтобы извлечь все параметры формы:

(POST "/" request 
    (str (:form-params request))) 

Синтаксис, используемый в этом вопросе является compojure конкретных destructuring syntax, что позволяет извлекать отдельные параметры из запрос. Это похоже на обычном синтаксис деструктурирующего Clojure, и, как и с обычной деструктуризацией, деструктурирующий compjure также позволяет смешивание деструктурирующего и по-прежнему получать весь запрос:

(POST "/" [param1 param2 :as request] 
     (str (:form-params request))) 

или экстракцию имя и все «дополнительными» параметры:

(POST "/" [param1 param2 & more-params] 
     (str more-params)) 
3

Я просто догадался поставить & params в векторе и работал:

(POST "/my-app" [& params] 
    (str "<h1>Hello " params "</h1>"))