(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
的值。
我想知道来自 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
的值。