Я думал, что опубликую это, поскольку я получил его для работы через догадки без реального понимания того, что происходит, и я подумал, что это может быть полезно, если кто-нибудь объяснит это.Разрушающие формы и Compojure?
Я понимаю, как получить на элементе из: Params карты в обработчике Compojure:
(GET "/something" [some_arg] "this is the response body")
или
(GET "/something" {{some_arg "some_arg"} :params} "this is the response body")
хотя я не совсем понимаю, что {some_arg "some_arg"}
часть делает :(
Я также хотел получить доступ к части запроса :remote-addr
, а также some_arg
. И я закончил с
(GET "/something" {{some_arg "some_arg"} :params ip :remote-addr}
(do-something-with some_arg ip))
Таким образом, я получаю, что котирующиеся строки some_arg
и ip
имен переменных, к которым я хочу значение связанно, но выше карта не действительна карта Clojure. Как это работает?
Я также получаю, что это оценивается по карте запроса кольца (которая каким-то образом предоставляется макросом defroutes
), но выражение выше не является определением функции или макроса, так как оно может существовать как действительное выражение в мой код? Есть ли какая-то приостановка нормальных правил для макросов? Мне не удалось найти определение синтаксиса форм деструктурирования, понятных для этого не-Lisp'er.
Я пропустил факт, что GET - это макрос. Объясняется в ответе ниже ... – edoloughlin