(GET "/" request (str request)) 如何在 compojure 中工作

How does (GET "/" request (str request)) work in compojure

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

的这段代码发生了什么神奇的事情

(获取“/”请求 (str 请求))

我希望它看起来像

(GET "/" [请求] (str 请求))

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

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

请求与 [请求] 有什么区别?

我已经更改了我的代码以查看在每种情况下会发生什么,只是想了解原因并确保我没有对第二个 arg 绑定到请求做出错误的假设。

谢谢 -jv

请求映射总是绑定到传递给路由宏的第二个参数。如果将其绑定为映射,它将通过常规 Clojure Map binding destructoring. 销毁。如果将其绑定为向量,Compojures 宏会在请求映射的 :params 映射中查找符号作为同名键。后者是 Compojure 特定的,并在您提供的问题 link 中进行了解释。

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

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

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