1

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

(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 允许使用哪些字符?蛞蝓 1-2-3、1|2|3、1_2_3 都有效,但 1.2.3 无效。有没有办法制作含有 . 工作?黑色路线中允许使用哪些字符?哪个代码导致了这种行为:noir、ring、compojure?

4

2 回答 2

1

看看Clout 测试用例

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

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

此外,还有一些带有文字点的测试,例如"/foo.:ext匹配 URL 之类 /foo.txt的,所以如果它是一个特性,而不是错误,我不会感到惊讶,不允许在 slug 中使用点。

于 2012-02-28T22:00:26.780 回答
0

它应该对此clout负责,这是 Compojure 使用的一个库。您可以wakeful查看一个设置不同匹配器的示例,特别是使用route-compile.

于 2012-02-28T19:45:41.090 回答