黑色的slu might允许哪些角色?

时间:2012-02-28 16:10:59

标签: clojure noir clout

我有一个Clojure服务,我通过REST公开。我有一个页面定义为:

(defpage "/package_versions/:id" {:keys [id]}
  (do
    (println "ID: " id)
    (if-let [pv (pv/fetch-one (db/keyspace) id)]
      (response/json pv)
      (response/status 404 nil))))

id允许哪些字符? slu 1-2 1-2-3,1 | 2 | 3,1_2_3都有效,但1.2.3没有。有没有办法制作含有的slu ..工作?黑色路线允许的角色是什么?哪种代码对此行为负责:noir,ring,compojure?

2 个答案:

答案 0 :(得分:1)

查看Clout test cases

测试中使用的slus中并没有真正的特殊字符,所以我不知道哪些字符是合法的,但是在文件的末尾有一个如何定义自定义路由匹配器的示例,大概可以如果你愿意,可以用来匹配点。

我希望您可以使用noir.core/compojure-routenoir.core/custom-handler将自定义路由匹配器插入Noir。

此外,还有测试中包含字面点,例如: "/foo.:ext匹配/foo.txt等网址,因此如果不允许使用slug中的点,我不会感到惊讶。

答案 1 :(得分:0)

应该{​​{3}}对此负责,这是Compojure使用的库。您可以查看clout,查看设置不同匹配器的示例,尤其是使用route-compile