我想知道来自https://github.com/weavejester/compojure/wiki/Destructuring-Syntax
的代码有什么神奇之处(GET" /"请求 (str request))
我希望它看起来像
(GET" /" [要求] (str request))
具体来说,请求如何绑定到第二个参数?
请求是否始终绑定到第二个参数?
请求与[请求]的区别是什么?
我已经更改了我的代码,看看每个场景中发生了什么,只是试图理解原因,并确保我没有做出错误的假设,关于第二个arg被绑定到请求。
由于 -jv
答案 0 :(得分:2)
请求映射始终绑定到传递给路由宏的第二个参数。如果将其绑定为map,它将通过常规Clojure Map binding destructoring.进行解构。如果将其绑定为向量,Compojures宏会将符号视为请求映射的:params
映射中的同名键。后者是Compojure特定的,并在您提供的链接中解释。
绑定通过GET
宏将您传递给它的表单转换为请求处理函数的源代码,并在范围内具有所需的查找。
第一个示例将request
绑定到整个请求映射。
第二个示例将request
绑定到请求地图的键:request
地图的键:params
的值。