【问题标题】:How does (GET "/" request (str request)) work in compojure(GET "/" request (str request)) 如何在 compojure 中工作
【发布时间】:2015-06-18 01:04:18
【问题描述】:

我想知道来自https://github.com/weavejester/compojure/wiki/Destructuring-Syntax 的这段代码有什么魔力

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

我希望它看起来像

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

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

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

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

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

谢谢 -jv

【问题讨论】:

    标签: clojure compojure


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢 Leon 的出色回答!
    猜你喜欢
    • 2023-02-07
    • 1970-01-01
    • 2020-09-12
    • 2016-01-28
    • 1970-01-01
    • 2022-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多