【问题标题】:Optional query parameters with default value with Compojure (without swagger)?Compojure 具有默认值的可选查询参数(没有招摇)?
【发布时间】:2017-01-10 08:05:54
【问题描述】:

我在 Compojure 中处理可选查询参数并将未定义的查询参数分配给默认值的惯用方式是什么。

我已经尝试过了(这可能显然不起作用):

(GET "/something/:id" [id q :<< as-int :or {q (System/currentTimeMillis)}]
    ....)

我希望这条路线同时匹配:

curl /something/123

curl /something/123?q=234542345

(请注意,here 已发布类似问题,但它使用 Swagger)

【问题讨论】:

    标签: clojure compojure


    【解决方案1】:

    您有很多选择。这是我可能会选择的。

    (GET "/something/:id" req
      (let [{:keys [id q] :or {q (System/currentTimeMillis)}} (:params req)]
    
        ,,,))
    

    不过,最终我选择哪一个取决于导致最易读(一种主观衡量,但就是这样)代码的因素。

    【讨论】:

    • 顺便说一句,我在“省略号”中使用逗号而不是点的原因是它们被 clojure 编译器解释为空格,因此您可以在代码保留时随意使用它们来进行说明可编译!我不记得我第一次看到这个想法是在哪里看到的,或者我会在这里相信它,这是一个非常好的想法,尽管一开始看起来很奇怪。
    猜你喜欢
    • 2016-06-21
    • 2021-07-05
    • 1970-01-01
    • 2020-08-23
    • 2013-04-25
    • 2021-09-24
    • 2022-06-21
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多