(GET“/”请求(str请求))如何在compojure中工作

时间:2015-04-12 18:40:31

标签: clojure compojure

我想知道来自https://github.com/weavejester/compojure/wiki/Destructuring-Syntax

的代码有什么神奇之处

(GET" /"请求   (str request))

我希望它看起来像

(GET" /" [要求]   (str request))

具体来说,请求如何绑定到第二个参数?

请求是否始终绑定到第二个参数?

请求与[请求]的区别是什么?

我已经更改了我的代码,看看每个场景中发生了什么,只是试图理解原因,并确保我没有做出错误的假设,关于第二个arg被绑定到请求。

由于 -jv

1 个答案:

答案 0 :(得分:2)

请求映射始终绑定到传递给路由宏的第二个参数。如果将其绑定为map,它将通过常规Clojure Map binding destructoring.进行解构。如果将其绑定为向量,Compojures宏会将符号视为请求映射的:params映射中的同名键。后者是Compojure特定的,并在您提供的链接中解释。

绑定通过GET宏将您传递给它的表单转换为请求处理函数的源代码,并在范围内具有所需的查找。

第一个示例将request绑定到整个请求映射。

第二个示例将request绑定到请求地图的键:request地图的键:params的值。