可选的查询参数,默认值为Compojure(没有招摇)?

时间:2016-09-02 09:04:32

标签: clojure compojure

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

我试过这个(这显然不起作用):

service firebase.storage {
  match /b/<my-firebase-storage-bucket>/o {
    match /{allPaths=**} {
      allow read: if request.auth.uid == "mystery";
      allow write: if request.auth.uid == "6EP13cYABCciskhKwMTaXYZHS5g1";
    }
  }
}

我希望这条路线能够匹配两者:

service firebase.storage {
  match /b/<my-firebase-storage-bucket>/o {
    match /{allPaths=**} {
      allow read: if false;
      allow write: if true;
    }
  }
}

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

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

1 个答案:

答案 0 :(得分:1)

您可以选择很多选项。这是我可以选择的。

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

    ,,,))

但最终,我选择哪一个取决于最可读的(主观测量,但就是它的方式)代码。