【问题标题】:What characters are permitted for a slug in noir?黑色中的蛞蝓允许哪些角色?
【发布时间】:2012-02-28 16:10:59
【问题描述】:

我有一个通过 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?

【问题讨论】:

    标签: clojure noir clout


    【解决方案1】:

    看看Clout test cases

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

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-30
      • 2016-04-21
      • 2016-04-20
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      相关资源
      最近更新 更多